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

Why does my code only print nil once?

修复超级容易;只需将其设置为 return nil,但 为什么 没有该行我的代码不能工作?

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

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

更令人困惑的是,它总是打印 nil,就像我调用 x(false) 减去 1 的次数一样多。

我似乎无法理解为什么会这样。

The manual 说:

If control reaches the end of a function without encountering a return statement, then the function returns with no results.

请注意,return没有结果与 returnnil 不同。


在这个调用中:

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

两个 x(false) return什么都没有,但是,除了最后一个元素之外的所有元素总是调整为恰好一个结果。

通常我们看到函数调用 return 一个或多个结果只剩下第一个。这里no result也补了个nil