我应该如何将对象列表从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
它跳过了第一个,但我得到一个例外:“索引在数组的边界之外。” 我的代码有什么问题?
答案 0 :(得分:1)
在Lua中,索引通常从索引1开始。从docs
Lua习惯以索引1开始数组
尝试这样的事情:
for i = 0, #Candidates do
print(i, Candidates[i])
end
我知道ipairs()
仅支持1个索引,因此您必须定义自己的函数或仅使用常规for。
我不确定但也可以尝试
for k,v in ipairs(Candidates), Candidates, -1 do
print(k, Candidates[k])
end
答案 1 :(得分:0)
C#列表具有Count属性。可用作迭代的上限:
[...]
var candidates = new List<int> { 0, 1, 2, 3, 4, 5 };
[...]
[...]
-- Iterate each candidate
for candidateCount = 0, Candidates.Count - 1 do
[...]