Lua代码为何仅执行一次打印操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计376个文字,预计阅读时间需要2分钟。
这段代码的问题在于,它没有正确处理布尔值参数,并且输出格式不清晰。以下是对代码的简化和改进:
luafunction x(bool) if bool then return ! else return nil endend
print(x(true), x(false), x(false))
改进后的代码更简洁,易于理解,并且避免了直接打印nil值的问题。输出结果会是一个感叹号后面跟着两个nil,这样的输出对于人来说更直观。
它非常容易修复;简单地让它返回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
returnstatement, then the function returns with no results.
请注意,返回无结果与返回nil不同.
在这个电话中:
print(x(true), x(false), x(false))
x(false)都不返回任何内容,但是除了最后一个元素之外的所有元素总是被调整为恰好一个结果.
通常我们看到函数调用返回一个或多个结果只剩下第一个.这里没有结果也没有填充.
本文共计376个文字,预计阅读时间需要2分钟。
这段代码的问题在于,它没有正确处理布尔值参数,并且输出格式不清晰。以下是对代码的简化和改进:
luafunction x(bool) if bool then return ! else return nil endend
print(x(true), x(false), x(false))
改进后的代码更简洁,易于理解,并且避免了直接打印nil值的问题。输出结果会是一个感叹号后面跟着两个nil,这样的输出对于人来说更直观。
它非常容易修复;简单地让它返回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
returnstatement, then the function returns with no results.
请注意,返回无结果与返回nil不同.
在这个电话中:
print(x(true), x(false), x(false))
x(false)都不返回任何内容,但是除了最后一个元素之外的所有元素总是被调整为恰好一个结果.
通常我们看到函数调用返回一个或多个结果只剩下第一个.这里没有结果也没有填充.

