我试图in pairs在函数内部使用但它不起作用,它只打印第一行(键).这是我的代码:
set = {1,2,3,4};
unset = {5,6,7,8};
function listen(ftype)
if (ftype == [[~]]) then
for num,str in pairs(set) do
return str;
end
end
if (ftype == [[$]]) then
for num,str in pairs(unset) do
return str;
end
end
end
print(listen([[~]])..[[ =:= ]]..listen([[$]]));
Run Code Online (Sandbox Code Playgroud)
如果我做这样的事情..
for num,str in pairs(unset) do
print(str);
end
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力.这正是我想要的,但在功能中.
您可以构建自己的迭代器:
function double_pair(t1, t2)
local i = 0
return function() i = i + 1
return t1[i] and t1[i] .. " =:= " .. t2[i]
end
end
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
for str in double_pair(set, unset) do
print(str)
end
Run Code Online (Sandbox Code Playgroud)
输出:
1 =:= 5
2 =:= 6
3 =:= 7
4 =:= 8
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要使用分号来结束语句,除非语句在一行中并且您希望将它们清除.并且[[ =:= ]]通常用于构建长多行字符串,通常我们选择使用双引号" =:= "或单引号' =:= '.