代码之家  ›  专栏  ›  技术社区  ›  Maxi

为什么有些价值观正在消失?

lua
  •  2
  • Maxi  · 技术社区  · 2 年前

    我需要使用一个函数来执行另一个函数,但在末尾添加一个额外的参数,所以我写了这样的话:

    function ExecuteWithMyNameAtTheEnd(f, ...)
        f(..., "Maxi")
    end
    
    ExecuteWithMyNameAtTheEnd(print, 1, 2, 3)
    

    但出于某种原因而不是印刷 1 2 3 Maxi 它打印 1 Maxi 我不知道为什么。我认为 ... 包含值 1 2 3 因为当我使用 print(...) 上面写着 1 2 3 。如果有帮助的话,我会使用Lua 5.4。

    如果我问这个问题时做错了什么,请告诉我,因为这是我第一次使用Stack Overflow,而且我不是以英语为母语的人。

    1 回复  |  直到 2 年前
        1
  •  3
  •   Joseph Sible-Reinstate Monica    2 年前

    当多个值后面有逗号时,它们会被截断。这样的方法可以作为一种变通方法:

    function ExecuteWithMyNameAtTheEnd(f, ...)
        local arg = table.pack(...)
        arg[arg.n + 1] = "Maxi"
        f(table.unpack(arg, 1, arg.n + 1))
    end
    
    ExecuteWithMyNameAtTheEnd(print, 1, 2, 3)