为什么我的代码只打印一次?

时间:2015-10-09 16:52:18

标签: lua null return-value user-defined-functions

它非常容易修复;只需将其设为return nil,但为什么我的代码在没有该行的情况下无法工作?

function x(bool)
    if bool then
        return "!"
    end
end

print(x(true), x(false), x(false))

让它更令人困惑的是,总是打印nil,多次调用x(false)减去1。

我似乎无法解决为什么会发生这种情况。

1 个答案:

答案 0 :(得分:6)

The manual说:

  

如果控件到达函数的末尾而没有遇到return语句,则函数返回时没有结果。

请注意,返回无结果与返回nil不同。

在此电话会议中:

print(x(true), x(false), x(false))

两个x(false)都不返回任何内容,但是除了最后一个元素之外的所有元素总是被调整为一个结果。

通常我们看到函数调用返回一个或多个结果只剩下第一个。这里没有结果也填充了nil