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

war*_*ing 5 null lua return-value user-defined-functions

它非常容易修复; 简单地说return nil,但为什么没有那条线我的代码不能工作?

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

print(x(true), x(false), x(false))
Run Code Online (Sandbox Code Playgroud)

令它更令人困惑的是,它总是打印出nil我所谓的x(false)减1的次数.

我似乎无法围绕为什么会发生这种情况.

Yu *_*Hao 6

手册说:

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

请注意,返回没有结果与返回不同nil.


在这个电话中:

print(x(true), x(false), x(false))
Run Code Online (Sandbox Code Playgroud)

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

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