红加黄等于什么颜色| 孕妇梦见血是什么预兆| 脚疼是什么原因引起的| 璟字五行属什么| 原发性高血压什么意思| 张艺谋为什么不娶巩俐| 图片px是什么意思| 织女是什么生肖| 血友病是什么意思| viki什么意思| 约谈是什么意思| 梦到蛇预示着什么意思| 冷淡是什么意思| 蛋糕是什么生肖| 小暑大暑是什么意思| 柠檬不能和什么一起吃| 胶原蛋白是什么| 牧师是什么意思| 胎停了有什么症状| 吃螃蟹不能吃什么| 黄芪有什么作用| hcg低有什么补救的办法| 堆肥是什么意思| 南京有什么好玩的| hbeag是什么意思| 嗜是什么意思| 男士生育检查挂什么科| 捞人什么意思| 老天爷叫什么名字| 1987年出生属什么生肖| 格拉苏蒂手表什么档次| 消炎吃什么药| 暴龙眼镜什么档次| 老过敏是缺什么维生素| 中专什么时候报名| 脚趾甲真菌感染用什么药| 34岁属什么| 肚子左边是什么器官| 鹰嘴桃什么时候成熟| 腋下有疙瘩是什么原因| 帝陀表什么档次| 6月底是什么星座| 三点水加个真念什么| 干眼症吃什么药| 得过且过是什么意思| 脑出血挂什么科| 脚掌发红是什么原因| 五心烦热是什么意思| 氨咖黄敏胶囊是治什么的| 10月3号是什么星座| 什么叫体制内| 牛肉可以炖什么| 光棍一条是什么生肖| 隔离霜有什么作用| 大年初一是什么生肖| 什么是幼小衔接| 承五行属性是什么| hbsag阳性是什么意思| 因祸得福是什么意思| 眩晕症吃什么药好| 吃完油炸的东西后吃什么化解| 恕是什么意思| 导盲犬一般是什么品种| 九重紫纪咏结局是什么| 身体有异味是什么原因| 白噪音什么意思| 御史相当于现在什么官| studio什么牌子| 芙蓉花又叫什么花| 科举制什么时候废除| 牛肉不能和什么食物一起吃| 打眼是什么意思| 特效药是什么意思| 我俩太不公平这是什么歌| 庚什么意思| 窈窕淑女是什么意思| 梦见摘果子是什么意思| 胃痛按什么部位可以缓解疼痛| 心肌缺血吃什么食物好| mrcp检查是什么意思| 左肺钙化灶是什么意思| 什么叫随机血糖| 肉筋是什么| 社保卡是什么意思| 为什么不能用红笔写名字| 肝郁脾虚吃什么药| 肠胀气是什么原因引起的| 慧外秀中什么意思| 高血压吃什么水果好| 疏导是什么意思| 刚怀孕需要注意什么| 尿酸高什么意思| 宝宝反复发烧是什么原因引起的| 湿厕纸是干什么用的| 生姜什么时候种植最合适| 烫伤起水泡涂什么药膏| 为什么医者不自医| 约炮什么意思| 能量是什么| 生活是什么意思| 男人精子少吃什么药| 嘴唇红润是表示什么| 普洱是什么茶| 严重失眠挂什么科| 动脉硬化挂什么科| 洛神花有什么功效| asmr是什么| 淼读什么字| 阴道炎吃什么消炎药| 发扬什么精神| 2.18是什么星座| 掉头发吃什么好| 什么是干细胞| 落地签是什么意思| 吃了紧急避孕药会有什么反应| 落红的血是什么样子的| 莺莺燕燕是什么意思| 喉咙疼是什么原因| 聪明的人有什么特征| 什么是法定节假日| 血压低吃什么| 三羊念什么字| 化疗和放疗什么区别| 什么咖啡好喝| 天是什么结构的字| 钙化是什么意思啊| 西字五行属什么| 什么是红斑狼疮病| olp是什么意思| 爆血管是什么原因引起的| 脑梗塞吃什么药| 3680是什么罩杯| 什么是省控线| 上海居住证积分有什么用| 天天吹空调有什么危害| 蜈蚣为什么不能打死| 拂尘是什么意思| 什么不动| 经常头痛什么原因| 发财树是什么树| 今年为什么这么热| 自然卷的头发适合什么发型| 什么叫肛裂| 痛风能吃什么菜| 2015属什么| 十二指肠憩室是什么意思| ipa啤酒是指什么| 慢性扁桃体炎吃什么药| 786是什么意思| 瓜娃子是什么意思| 早搏有什么症状| 7月份是什么季节| 什么东西能吃能喝又能坐| 爱哭的人是什么性格| 什么快递最便宜| 粗茶淡饭下一句是什么| 为什么一来月经就头疼| 竹笋炒什么好吃| 太作了是什么意思| 阴虚火旺吃什么药| 玉米什么时候播种| 汤姆福特属于什么档次| 缘是什么意思| 褥疮用什么药膏最好| 政协副主席是什么级别| 孔雀的尾巴有什么作用| palace什么牌子| 甲醛超标有什么反应| 什么食物维生素b含量高| 经常吃蜂蜜有什么好处| 六爻是什么意思| 副教授是什么级别| 男性小便出血是什么原因| 床榻是什么意思| 肺大泡是什么病严重吗| 未必是什么意思| 10月13号是什么星座| 异丙醇是什么东西| 胸口不舒服挂什么科| 刮痧是什么原理| 脑干出血是什么原因| 血糖高什么水果可以吃| 冒汗是什么原因| 肛门是什么意思| 非布司他片是什么药| 癌前病变是什么意思| 大拇指有黑色竖纹是什么原因| 考科目二紧张吃什么药| 04年是什么年| 婴儿口臭是什么原因引起的| 隐形眼镜什么牌子好| 做噩梦被吓醒预示什么| dia什么意思| 一个木一个西读什么| 三眼花翎是什么意思| 自缢是什么意思| 易主是什么意思| 腿弯后面疼是什么原因| 梦见眉毛掉了什么预兆| 为什么会长疤痕疙瘩| 口干舌燥是什么原因| 什么的石桥| 8月8号是什么日子| 天铁是什么| 来大姨妈吃什么| 血糖血脂挂什么科| 推特是什么意思| 谋生是什么意思| 三跪九叩是什么意思| 肝火旺有什么症状| 1989是什么年| 3月是什么星座| 坦诚相待是什么意思| 低碳生活是什么意思| 疟疾是什么意思| 什么惚惚| 阴唇黑是什么原因| 1999年发生了什么事| 韭菜炒什么好吃| 阑尾炎吃什么药见效快| 画面感是什么意思| 头皮起疙瘩是什么原因| 白虎女是什么意思| 支气管炎挂什么科| 梦见一个人说明什么| 什么快递可以寄活物| 干眼症吃什么药| 小麦过敏可以用什么代替面食| 缓刑是什么意思还要坐牢吗| 洁身自好什么意思| 胃胀什么原因| 腿肿是什么病的前兆| 男士内裤什么材质的好| 停电了打什么电话| 吃蛋白粉有什么好处和坏处| exo是什么意思啊| 尿检能查出什么| 八月2号是什么星座| 母亲节送什么颜色的康乃馨| 集成灶什么品牌最好| 胃不好可以吃什么水果| 恩怨是什么意思| 脚上有水泡是什么原因| 扁平足看什么科| 羊水穿刺检查什么| 结肠多发憩室是什么意思| 为什么得疱疹病毒| 一的五行属性是什么| 发烧骨头疼是什么原因| 手和脚脱皮是什么原因| 宝宝蛋白质过敏喝什么奶粉| 检查hpv需要注意什么提前注意什么| 甲状腺是什么意思| 怀孕可以喝什么饮料| 大便粘稠是什么原因| 什么时候会怀孕| 鸡飞狗跳是什么意思| 核苷酸是什么| r是什么牌子衣服| 扬代表什么生肖| 纵横四海是什么意思| 四个火念什么字| 俱往矣是什么意思| 人中深的女人代表什么| 百度Aller au contenu

用可见光采集虹膜 成都黑科技有望“刷眼”支付

èn ?rtike di Wikipedia.
百度 由于两岸围垦与江道整治,交叉潮出现的位置已移至旧仓附近,然而民国时,交叉潮的位置要西面的多,在盐官也常有交叉潮出现(见下面民国旧影),所以镜头中的潮头高度是由于交叉潮叠加造成的。

La documentation pour ce module peut être créée à Module:TableTools/doc

--[[
------------------------------------------------------------------------------------
--                               TableTools                                       --
--                                                                                --
-- This module includes a number of functions for dealing with Lua tables.        --
-- It is a meta-module, meant to be called from other Lua modules, and should     --
-- not be called directly from #invoke.                                           --
------------------------------------------------------------------------------------
--]]

local libraryUtil = require('libraryUtil')

local p = {}

-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti

--[[
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
--]]
function p.isPositiveInteger(v)
	if type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then
		return true
	else
		return false
	end
end

--[[
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a value can be a valid table key. Lua will
-- generate an error if a NaN is used as a table key.
------------------------------------------------------------------------------------
--]]
function p.isNan(v)
	if type(v) == 'number' and tostring(v) == '-nan' then
		return true
	else
		return false
	end
end

--[[
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
--]]
function p.shallowClone(t)
	local ret = {}
	for k, v in pairs(t) do
		ret[k] = v
	end
	return ret
end

--[[
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
--]]
function p.removeDuplicates(t)
	checkType('removeDuplicates', 1, t, 'table')
	local isNan = p.isNan
	local ret, exists = {}, {}
	for i, v in ipairs(t) do
		if isNan(v) then
			-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
			ret[#ret + 1] = v
		else
			if not exists[v] then
				ret[#ret + 1] = v
				exists[v] = true
			end
		end	
	end
	return ret
end			

--[[
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
--]]
function p.numKeys(t)
	checkType('numKeys', 1, t, 'table')
	local isPositiveInteger = p.isPositiveInteger
	local nums = {}
	for k, v in pairs(t) do
		if isPositiveInteger(k) then
			nums[#nums + 1] = k
		end
	end
	table.sort(nums)
	return nums
end

--[[
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will
-- return {1, 3, 6}.
------------------------------------------------------------------------------------
--]]
function p.affixNums(t, prefix, suffix)
	checkType('affixNums', 1, t, 'table')
	checkType('affixNums', 2, prefix, 'string', true)
	checkType('affixNums', 3, suffix, 'string', true)

	local function cleanPattern(s)
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
		s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
		return s
	end

	prefix = prefix or ''
	suffix = suffix or ''
	prefix = cleanPattern(prefix)
	suffix = cleanPattern(suffix)
	local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'

	local nums = {}
	for k, v in pairs(t) do
		if type(k) == 'string' then			
			local num = mw.ustring.match(k, pattern)
			if num then
				nums[#nums + 1] = tonumber(num)
			end
		end
	end
	table.sort(nums)
	return nums
end

--[[
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table
-- of subtables in the format 
-- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }
-- Keys that don't end with an integer are stored in a subtable named "other".
-- The compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.numData(t, compress)
	checkType('numData', 1, t, 'table')
	checkType('numData', 2, compress, 'boolean', true)
	local ret = {}
	for k, v in pairs(t) do
		local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
		if num then
			num = tonumber(num)
			local subtable = ret[num] or {}
			if prefix == '' then
				-- Positional parameters match the blank string; put them at the start of the subtable instead.
				prefix = 1
			end
			subtable[prefix] = v
			ret[num] = subtable
		else
			local subtable = ret.other or {}
			subtable[k] = v
			ret.other = subtable
		end
	end
	if compress then
		local other = ret.other
		ret = p.compressSparseArray(ret)
		ret.other = other
	end
	return ret
end

--[[
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.compressSparseArray(t)
	checkType('compressSparseArray', 1, t, 'table')
	local ret = {}
	local nums = p.numKeys(t)
	for _, num in ipairs(nums) do
		ret[#ret + 1] = t[num]
	end
	return ret
end

--[[
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
--]]
function p.sparseIpairs(t)
	checkType('sparseIpairs', 1, t, 'table')
	local nums = p.numKeys(t)
	local i = 0
	local lim = #nums
	return function ()
		i = i + 1
		if i <= lim then
			local key = nums[i]
			return key, t[key]
		else
			return nil, nil
		end
	end
end

--[[
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
--]]

function p.size(t)
	checkType('size', 1, t, 'table')
	local i = 0
	for k in pairs(t) do
		i = i + 1
	end
	return i
end


local function defaultKeySort(item1, item2)
	-- "number" < "string", so numbers will be sorted before strings.
	local type1, type2 = type(item1), type(item2)
	if type1 ~= type2 then
		return type1 < type2
	else -- This will fail with table, boolean, function.
		return item1 < item2
	end
end

--[[
	Returns a list of the keys in a table, sorted using either a default
	comparison function or a custom keySort function.
]]
function p.keysToList(t, keySort, checked)
	if not checked then
		checkType('keysToList', 1, t, 'table')
		checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' })
	end
	
	local list = {}
	local index = 1
	for key, value in pairs(t) do
		list[index] = key
		index = index + 1
	end
	
	if keySort ~= false then
		keySort = type(keySort) == 'function' and keySort or defaultKeySort
		
		table.sort(list, keySort)
	end
	
	return list
end

--[[
	Iterates through a table, with the keys sorted using the keysToList function.
	If there are only numerical keys, sparseIpairs is probably more efficient.
]]
function p.sortedPairs(t, keySort)
	checkType('sortedPairs', 1, t, 'table')
	checkType('sortedPairs', 2, keySort, 'function', true)
	
	local list = p.keysToList(t, keySort, true)
	
	local i = 0
	return function()
		i = i + 1
		local key = list[i]
		if key ~= nil then
			return key, t[key]
		else
			return nil, nil
		end
	end
end

--[[
	Returns true if all keys in the table are consecutive integers starting at 1.
--]]
function p.isArray(t)
	checkType("isArray", 1, t, "table")
	
	local i = 0
	for k, v in pairs(t) do
		i = i + 1
		if t[i] == nil then
			return false
		end
	end
	return true
end

-- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 }
function p.invert(array)
	checkType("invert", 1, array, "table")
	
	local map = {}
	for i, v in ipairs(array) do
		map[v] = i
	end
	
	return map
end

--[[
	{ "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true }
--]]
function p.listToSet(t)
	checkType("listToSet", 1, t, "table")
	
	local set = {}
	for _, item in ipairs(t) do
		set[item] = true
	end
	
	return set
end

--[[
	Recursive deep copy function.
	Preserves identities of subtables.
	
]]
local function _deepCopy(orig, includeMetatable, already_seen)
	-- Stores copies of tables indexed by the original table.
	already_seen = already_seen or {}
	
	local copy = already_seen[orig]
	if copy ~= nil then
		return copy
	end
	
	if type(orig) == 'table' then
		copy = {}
		for orig_key, orig_value in pairs(orig) do
			copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)
		end
		already_seen[orig] = copy
		
		if includeMetatable then
			local mt = getmetatable(orig)
			if mt ~= nil then
				local mt_copy = deepcopy(mt, includeMetatable, already_seen)
				setmetatable(copy, mt_copy)
				already_seen[mt] = mt_copy
			end
		end
	else -- number, string, boolean, etc
		copy = orig
	end
	return copy
end

function p.deepCopy(orig, noMetatable, already_seen)
	checkType("deepCopy", 3, already_seen, "table", true)
	
	return _deepCopy(orig, not noMetatable, already_seen)
end

--[[
	Concatenates all values in the table that are indexed by a number, in order.
	sparseConcat{ a, nil, c, d }  =>  "acd"
	sparseConcat{ nil, b, c, d }  =>  "bcd"
]]
function p.sparseConcat(t, sep, i, j)
	local list = {}
	
	local list_i = 0
	for _, v in p.sparseIpairs(t) do
		list_i = list_i + 1
		list[list_i] = v
	end
	
	return table.concat(list, sep, i, j)
end

--[[
-- This returns the length of a table, or the first integer key n counting from
-- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return
-- a different value when there are gaps in the array portion of the table.
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of 
-- the number of unnamed template parameters, so use this function for
-- frame.args.
--]]
function p.length(t)
	local i = 1
	while t[i] ~= nil do
		i = i + 1
	end
	return i - 1
end

function p.inArray(arr, valueToFind)
	checkType("inArray", 1, arr, "table")
	
	-- if valueToFind is nil, error?
	
	for _, v in ipairs(arr) do
		if v == valueToFind then
			return true
		end
	end
	
	return false
end

return p
喉咙疼吃什么水果好 肝实质密度减低是什么意思 孩子出疹子应该注意什么 肝疼吃什么药好 早上起来眼皮肿是什么原因
胃痛吃什么药好 今天是什么生肖 牙痛吃什么消炎药 生吃苦瓜有什么好处和坏处 右肺中叶小结节是什么意思严重吗
为什么会胃胀气 流年什么意思 天然气什么味道 支原体感染吃什么食物好 马卡龙是什么
鱼香肉丝为什么没有鱼 了加一笔是什么字 代偿期和失代偿期是什么意思 鼻涕臭是什么原因 茄子不能和什么一起吃
梦到车坏了是什么意思xscnpatent.com 身体发麻是什么原因sanhestory.com 少尉军衔是什么级别hcv9jop2ns8r.cn 较前相仿是什么意思liaochangning.com 吃芒果后不能吃什么hcv8jop4ns6r.cn
体检查什么hcv8jop1ns1r.cn 梅花手表属于什么档次hcv7jop4ns6r.cn 917是什么星座hcv8jop1ns0r.cn 头痛吃什么药效果好hcv9jop2ns0r.cn 什么是风湿hcv9jop8ns2r.cn
衣原体感染男性吃什么药hcv8jop3ns2r.cn 央企与国企有什么区别dayuxmw.com 手麻吃什么药效果好hcv8jop5ns0r.cn 卫衣是什么hcv8jop6ns6r.cn 梦见吃油饼是什么意思hcv8jop2ns1r.cn
唇钉是干什么用的hcv9jop7ns0r.cn 阴茎不硬是什么原因hcv8jop8ns6r.cn 孔雀开屏是什么意思hcv9jop8ns1r.cn 病毒由什么构成hcv9jop1ns2r.cn 黑下打信是什么任务hcv9jop6ns0r.cn
百度