10

Luaテーブルでマップ/選択を行う良い方法を探しています。

例えば。私はテーブルを持っています:

myTable = {
  pig = farmyard.pig,
  cow = farmyard.bigCow,
  sheep = farmyard.whiteSheep,
}

myTable.map(function(f) f.getName) の書き方 [すべての農場の動物に名前があると仮定して]

すなわち。テーブル内のすべての要素に関数を適用します。

4

5 に答える 5

21

独自のバージョンを作成しますか? 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
于 2012-07-26T14:41:59.360 に答える
2

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 には存在しません。

于 2012-07-26T13:25:25.680 に答える