lua (Syntax): 调用返回多个值的函数,并将这些值作为参数使用,但不需要额外的变量赋值行吗?

我有一个需要调用以下函数的情况:

function xy(i)
return i,i+8
end

并将其输出用于另一个函数。

function addition(x,y)
return x+y
end

有没有更优雅的方法让它运行,而不是这样写:

i.e. i=10; x,y=xy(10); addition(x,y)--28

我正在寻找这样的内容:

i.e. i=10; addition(xy(10)--我在这里以某种方式获取两个参数)

两个功能都是在其他地方使用的通用函数,合并不可行,可能需要编辑它们返回的内容或方式。

点赞
用户2864740
用户2864740

至少在 Lua 5.1 及以后的版本中,下面的方法“按要求”生效。

当一个函数调用是另一个调用的最后一个(或唯一的)参数时,第一个调用的所有结果都被作为参数传递。[有几个使用 print 的例子。]

function xy(i)
    return i,i+8
end

function addition(x,y)
    return x+y
end

addition(xy(10)) -- 28

一个更冗长的方法,在需要更灵活性的类似情况下可能会有用,是将结果转换为表,然后使用 unpack(从 5.1 版本开始添加)。该方法是从结果到表到解包到参数(参见以上)。

addition(unpack({xy(10)})) -- 28

以下是两种方法的 replit 版本。

2021-08-02 22:06:49