私は、forループのすべての反復を評価する動的式にコンテキストを渡そうとしています。私はロード文字列がローカル変数がアクセス不能であることを意味するグローバルコンテキスト内でのみ評価することを理解しています。私の場合は、文字列評価の目的でローカルをグローバルに変換することでこの制限を回避します。ここで私が持っているものです。Lua:コンテキストをloadstringに渡しますか?
require 'cosmo'
model = { { player = "Cliff", age = 35, gender = "male" }, { player = "Ally", age = 36, gender = "female" }, { player = "Jasmine", age = 13, gender = "female" }, { player = "Lauren", age = 6.5, gender = "female" } }
values = { eval = function(args)
output = ''
condition = assert(loadstring('return ' .. args.condition))
for _, it in ipairs(model) do
each = it
if condition() then
output = output .. each.player .. ' age: ' .. each.age .. ' ' .. '\n'
end
end
return output
end }
template = "$eval{ condition = 'each.age < 30' }"
result = cosmo.fill(template, values)
print (result)
(Luaのマスタリング以外の)私の究極の目標は、私のような何かを行うことができエンジン誘惑のようなXSLTアウト構築することである。
apply_templates{ match = each.age > 30}[[<parent-player>$each.player</parent-player>]]
apply_templates{ match = each.age > 30}[[<child-player>$each.player</child-player>]]
を...そして異なる生成出力する。現時点では、私は地元の文脈をグローバルで分かち合っている私の上品な手段で立ち往生しています。ここにいる誰かが、私がやろうとしていることをどうやってやっていくのかについて、より良い見識を持っていますか?
[webデータマイナー](https://github.com/mkottman/wdm/blob/master/wdm.lua#L156)の貧しい人のXML要素検索でも同様のことを使用します。 –
それはすばらしく動作します!ありがとう! :) – Cliff