今天发现lua的一个问题,不知是否是bug。由于本人在编译器实现方面知之甚少,所以请云风大侠解答一下。问题是这样的,函数A接受三个参数,函数B有两个返回值,实现如下 local function A(a, b, c) print(a, b, c) end local function B() return 1, 2 end 当调用函数A时,前两个参数用B的两个返回值做实参,第三个参数由自己给出,这时问题出现,即B的第二个返回值会被“吃掉”;当第一个参数自己提供,后两个参数由B的两个返回值做实参时,毫无问题。代码如下 A(B(), "hello") -- output is: 1 hello nil A("hello", B()) -- output is: hello 1 2