返回

今天发现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

名字: 自动排版 密码:

回复 | (2699) | Destiny | 2013-10-28 10:24:34