Lua代码为何只执行一次打印操作就不再响应?

2026-04-01 20:411阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计384个文字,预计阅读时间需要2分钟。

Lua代码为何只执行一次打印操作就不再响应?

这段代码的目的是检查一个布尔值,并根据布尔值返回一个特定的字符串。下面是简化后的版本,避免使用数数,并且不超过100个字:

luafunction x(bool) if bool then return ! else return nil endend

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

简化说明:- 函数`x`接收一个布尔参数。- 如果布尔值为`true`,返回`!`。- 如果布尔值为`false`,返回`nil`。- 打印函数对`true`和两个`false`的调用结果。

它非常容易修复;简单地让它返回nil,但为什么没有那行我的代码不能工作?

function x(bool) if bool then return "!" end end print(x(true), x(false), x(false))

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

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

The manual说:

Lua代码为何只执行一次打印操作就不再响应?

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

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

在这个电话中:

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

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

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

本文共计384个文字,预计阅读时间需要2分钟。

Lua代码为何只执行一次打印操作就不再响应?

这段代码的目的是检查一个布尔值,并根据布尔值返回一个特定的字符串。下面是简化后的版本,避免使用数数,并且不超过100个字:

luafunction x(bool) if bool then return ! else return nil endend

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

简化说明:- 函数`x`接收一个布尔参数。- 如果布尔值为`true`,返回`!`。- 如果布尔值为`false`,返回`nil`。- 打印函数对`true`和两个`false`的调用结果。

它非常容易修复;简单地让它返回nil,但为什么没有那行我的代码不能工作?

function x(bool) if bool then return "!" end end print(x(true), x(false), x(false))

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

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

The manual说:

Lua代码为何只执行一次打印操作就不再响应?

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

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

在这个电话中:

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

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

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