*Luaで良く作る関数 ~table編~ [#x86ba688] -[[table.empty>#table_empty]] -[[table.elemn>#table_elemn]] -[[table.in_key>#table_in_key]] -[[table.in_value>#table_in_value]] -[[table.map>#table_map]] &aname(table_empty); **table.empty [#v0d29c8d] #sh(lua){{ -- テーブルが空かどうかの判定 -- 引数にnilを渡しても「空」とみなす。 function table.empty(tbl) if tbl==nil then return true end return not next (tbl) end }} &aname(table_elemn); **table.elemn [#p6fb257c] #sh(lua){{ -- テーブルに実際に存在する要素数(=num of elements) -- 「#」や「table.getn」「table.maxn」ではテーブルの要素数は調べられないので必要となる。 function table.elemn(tbl) local n = 0 for _ in pairs (tbl) do n = n + 1 end return n end }} &aname(table_in_key); **table.in_key [#qe875447] #sh(lua){{ -- 対象のテーブルのキーに、指定のkeyが存在するかどうか。 function table.in_key (tbl, key) for k, v in pairs (tbl) do if k==key then return true end end return false end }} &aname(table_in_value); **table.in_value [#zc99510e] #sh(lua){{ -- 対象のテーブルの値に、指定のvalが存在するかどうか。 function table.in_value (tbl, val) for k, v in pairs (tbl) do if v==val then return true end end return false end }} &aname(table_map); **table.map [#vf1c03dc] #sh(lua){{ -- 対象のテーブルの各要素に対して、func(key, value)を実行し、関数実行結果を格納する。 -- 元のテーブルの値は変化せず、新たなテーブルが返される。 function table.map(tbl, func) local ret_tbl = {} for k, v in pairs (tbl) do ret_tbl[k] = func (k, v) end return ret_tbl end }}