LuaからC++にテーブルをロードしようとしています。これは、ファイルの外観です。Luaファイルをロードし、関数を実行せずに変数を使用する
function alma(arg)
print(arg)
end
sometable = {
num = 5,
text = "this is a string",
nested = {
{"a", alma("argument")},
{"table", alma("arg")},
{"element", alma("asd")}
}
}
私がluaL_loadfile
に電話すると、チャンクしか取得できません。私がlua_dofile
を呼び出すと、要素が得られますが、各要素に対してalma関数が実行されます。 this SOスレッドでは、誰かがこれらの種類のものを関数にラップし、データを取得するために呼び出すと言いました。関数を3回折り返して呼び出すと、3つのalma関数がgetterを呼び出す瞬間を実行します。 alma関数を実行せずにsometable
とその要素を取得するにはどうすればよいですか?
あなたは、そのテーブルにいくつかの要素の遅延評価を実装するために、テーブルの上にメタテーブルを使用することができます。したがって、最初に対応する要素にアクセスした場合にのみ、 'alma'が呼び出されます。この機能は透過的です。明示的に関数を呼び出す必要はありません。 –