Luaテーブルでマップ/選択を行う良い方法を探しています。
例えば。私はテーブルを持っています:
myTable = {
pig = farmyard.pig,
cow = farmyard.bigCow,
sheep = farmyard.whiteSheep,
}
myTable.map(function(f) f.getName) の書き方 [すべての農場の動物に名前があると仮定して]
すなわち。テーブル内のすべての要素に関数を適用します。
独自のバージョンを作成しますか? lua でこれを行うための組み込み関数はありません。
function map(tbl, f)
local t = {}
for k,v in pairs(tbl) do
t[k] = f(v)
end
return t
end
t = { pig = "pig", cow = "big cow", sheep = "white sheep" }
local newt = map(t, function(item) return string.upper(item) end)
table.foreach(t, print)
table.foreach(newt, print)
生成:
pig pig
sheep white sheep
cow big cow
pig PIG
cow BIG COW
sheep WHITE SHEEP
Lua 5.1 を使用している場合は、以下を使用できますtable.foreach()
。
a = { 1, 2, 3 }
table.foreach(a, function(k,v) a[k] = v + 2 end)
table.foreach(a, print)
-- 1 3
-- 2 4
-- 3 5
ただし、これは推奨されておらず、5.2 には存在しません。