我应该如何将对象列表从 C# 传递并迭代到 Lua?
我的示例使用 int
数组,当我使用自定义类时,我得到相同的结果:
state_ = new Lua();
state_.LoadCLRPackage();
var candidates = new int[] { 0, 1, 2, 3, 4, 5 };
state_["Candidates"] = candidates;
state_.DoString(script);
var b = state_["Candidates"] as int[];
return toRetrun;
脚本在哪里
-- Iterate each candidate
for k,v in ipairs(Candidates) do
print(k, Candidates[k])
end
输出为:
1 1
2 2
3 3
4 4
5 5
它跳过第一个,我得到异常:“索引超出了数组的范围。” 我的代码有什么问题吗?
最佳答案
在Lua中,索引一般从索引1开始。来自docs
it is customary in Lua to start arrays with index 1
尝试这样的事情:
for i = 0, #Candidates do
print(i, Candidates[i])
end
据我所知,ipairs()
仅支持 1 个索引,因此您必须定义自己的函数或仅使用常规函数。
我不确定,但也尝试一下
for k,v in ipairs(Candidates), Candidates, -1 do
print(k, Candidates[k])
end
关于c# - 如何从 C# 到 NLua 传递和迭代对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56246049/