【问题标题】:Lua Script - Script requestLua Script - 脚本请求
【发布时间】:2014-02-21 17:33:12
【问题描述】:

有人可以帮我编写以下脚本吗?

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

但预期的输出只是:nil nil nil nil nil nil nil nil nil。然后我尝试这样做:

function fffFunction (nnn)
    ff={nnn} 
    print(ff[3]) 
    print(ff[6]) 
    print(ff[9]) 
end

但我得到了一些奇怪的数字和字母,例如:“table: foi0239023jr”,以及我不想打印的其他函数。

【问题讨论】:

  • 如何做作业?如果我们能得到一个 lua 的作业,可能会很酷。我们必须做帕斯卡。我创建了脚本,这是我尝试过的。 IDK 对此还有什么要完成的。
  • 嗯,你真的不清楚你想要实现什么,你还没有展示你尝试了什么。一旦你展示了你尝试过的东西,我可以撤消我的反对意见,我会发布一个答案。
  • Schollii,我试过了,我输入了函数: print(nnn[3]) print(nnn[6]) print(nnn[9]) 但是我在输出时得到了很多 nils。我也尝试在函数上写这个: ff={nnn} print(ff[3]) print(ff[6]) print(ff[9]) 但也没有用
  • 什么你尝试在 fffFunction 中添加了什么?其他函数调用的输出是什么(除 3、6、9 之外的所有行)?
  • 我怎么说,我试着输入 fffFunction print(nnn[3]) print (nnn[6]) print(nnn[9]) ,但预期的输出只是: nil nil无 无 无 无 无 无 无。然后我尝试这样做: ff={nnn} print(ff[3]) print(ff[6]) print(ff[9]) 但我得到了一些奇怪的数字和字母,例如:“table:foi0239023jr” ,以及我不想打印的其他功能

标签: lua


【解决方案1】:

我认为这就是你想要的:

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()

【讨论】:

    【解决方案2】:

    请查看coroutine 以更好地理解代码。

    想法是在函数调用之间跟踪索引,所以,创建一个协程!

    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")
    

    【讨论】:

    • 它在这里工作.. lua 5.2 :) [edit: index multiple of tree 将打印参数... index 是 yield 返回的,coroutine.resume 的第二个值]
    • 你是如何尝试执行它的?你用的是哪个lua版本?我已经用这段代码创建了一个 test.lua 并用 'lua test.lua' 运行它...版本 5.2
    • 我不知道,我用的是一个叫Transformice的游戏的Lua接口。
    • 我不知道,抱歉。使用此信息编辑您的帖子,以便其他用户能够帮助您...
    【解决方案3】:

    您调用函数 9 次,每次使用不同的字符串,因此每次调用 fffFunction 时 nnn 都是不同的字符串。字符串不支持下标 [] 操作。在您的第一次尝试中,每次调用该函数时都会打印 3 个 nil(在单独的行上)。在您的第二次尝试中,您创建了一个包含一个元素的表,即字符串。然后 ff[3] 获取 table 的第三个元素,因为没有,所以它是 nil。当你得到“表:奇怪的字符”输出时,你可能做了 print(ff)。

    如果您按照与列出的顺序相同的顺序调用它,以下将产生您列出的所需输出:

    function fffFunction(nnn)
        if nnn == "lle" or nnn == "ctr" or nnn == "kll" then
            print(nnn)
        end
    end
    

    【讨论】:

    • 如果有可能,没有那个如果。如果我要更改功能,我想打印另一件事。如果我要改变功能,这才有意义。
    • 这个方法会打印所有的函数,我只想要第3,6,9行的函数。所以我会告诉你我想要什么:我想定义所有这 9 个函数。要在聊天中打印第 3、6、9 行的功能。如果我改变功能,输出会有所不同,才有意义。
    • 我已经删除了第二种方法,因为它不是你想要的。但是第一个仍然有效,并且只会打印第 3、6 和 9 行。但是,“如果我更改函数,输出会有所不同”:您将不得不说出它们会有什么不同。或许可以举出更多的例子。
    • 我想说...如果我将函数的名称从 lle 更改为... idk 让我们说 IDK。印刷品将是 IDK。使用这种方法,将不会打印该行,因为是“if nnn == lle”并且如果我更改为 IDK,则无法找到和打印。而且我不想要“如果不是”的方法,因为如果我改变那些没有打印的功能,用不同的东西,它们也会被打印!我想你明白了。就像维克多·托索(Victor Toso)如何做的那样,但是用另一种方法,因为那种方法对我不起作用!
    • 哦,你的第二种方法真的很好,你知道我做了什么吗?我在第 3,6 和 9 行未运行的其他函数中添加了一些“--”
    【解决方案4】:
    function fffFunction(nnn)
      List = List or {print, type, type}
      table.insert(List, table.remove(List, 1))
      List[1](nnn)
    end
    

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2015-02-19
      • 2020-03-19
      • 2023-03-12
      相关资源
      最近更新 更多