有人能帮我写下面的剧本吗?
function fffFunction(nnn)
end
fffFunction("gor")
fffFunction("ggg")
fffFunction("lle")
fffFunction("trw")
fffFunction("int")
fffFunction("ctr")
fffFunction("gsv")
fffFunction("gmd")
fffFunction("kll")完成脚本,并完成我想要的预期输出如下:
lle
ctr
kll如果您不明白,请随时评论您想尝试的测试输入,我将运行它--唯一运行的函数是在第3、第6和第9行。
编辑:
我试过了
function fffFunction (nnn)
print(nnn[3])
print(nnn[6])
print(nnn[9])
end但预期的产出只是:零。然后我试着这么做:
function fffFunction (nnn)
ff={nnn}
print(ff[3])
print(ff[6])
print(ff[9])
end但是我得到了一些奇怪的数字和字母,比如:"table: foi0239023jr",以及其他我不想打印的函数。
发布于 2014-03-07 16:57:10
我想这就是你想要的:
data={}
function fffFunction(nnn)
table.insert(data,nnn)
end
function output()
for i=1,#data do
if (i==3 or i==6 or i==9) then
print(data[i])
end
end
end
fffFunction("gor")
fffFunction("ggg")
fffFunction("lle")
fffFunction("trw")
fffFunction("int")
fffFunction("ctr")
fffFunction("gsv")
fffFunction("gmd")
fffFunction("kll")
output()发布于 2014-02-21 18:30:30
请在协同线中查看以更好地理解代码。
ideia是跟踪函数调用之间的索引,所以,创建一个协同线!
co_counter = coroutine.create(function ()
local i = 0
while true do
i = i + 1
coroutine.yield(i)
end
end)
function fffFunction(nnn)
local _, count = coroutine.resume(co_counter)
if count % 3 == 0 then
print (nnn)
end
end
fffFunction("gor")
fffFunction("ggg")
fffFunction("lle")
fffFunction("trw")
fffFunction("int")
fffFunction("ctr")
fffFunction("gsv")
fffFunction("gmd")
fffFunction("kll")发布于 2014-02-21 20:13:07
您要调用函数9次,每次使用不同的字符串,因此nnn在每次调用fffFunction时都是不同的字符串。字符串不支持下标[]操作。在您的第一次尝试中,该函数将在每次调用它时打印3个nils (在不同的行上)。在第二次尝试中,您创建了一个由一个元素组成的表,即字符串。然后,ff3获取表的第三个元素,即零,因为没有。当您得到“表:奇怪的字符”输出时,可能会打印(Ff)。
如果以与列表相同的顺序调用,下面将产生所需的输出:
function fffFunction(nnn)
if nnn == "lle" or nnn == "ctr" or nnn == "kll" then
print(nnn)
end
endhttps://stackoverflow.com/questions/21941242
复制相似问题