gpt4 book ai didi

lua - 为什么即使没有选择表中的函数也会被调用

转载 作者:行者123 更新时间:2023-12-04 17:10:12 26 4
gpt4 key购买 nike

作为初学者,我在 Lua 中有一个简单的问题:

a = function()
print("hello")
end

b = {125, 116, a()}

print(b[1])

它应该只打印 125 , 但也会打印 hello也。即使未选择表值。

最佳答案

正如所写,您已经创建了一个分配给 a 的函数。不带参数也不返回任何内容;它有打印“hello”的副作用。

然后创建一个存储在 b 中的表。具有三个表达式:b[1]b[2]是数字,b[3]是调用存储在a中的函数的结果, 将按照常规规则通过填充根据需要调整为单个值 nil .所以b将是一个只包含两个条目的表格,都是数字。但是,a()在创建 b 时调用的值,打印“你好”。

最后,您调用print(b[1])打印预期的数字。

这完全解释了您看到的输出。由于这可能不是您期望看到的输出,您可以通过多种方式解决此问题。

例如,声明 a返回“你好”而不是调用打印。

a = function() return "hello" end

然后在构造存储在 b 中的表时调用它不会打印任何东西, b将获得第三个元素,字符串“hello”。

或者,您可以将函数存储在 b 中。通过省略导致它被调用的括号。
b = {125, 116, a}

再次, b包含一个由三个元素组成的表。在这种情况下, b[3]是打印“hello”的函数。

您选择做什么完全取决于您对存储在 b 中的表中的值的预期用途。 .

关于lua - 为什么即使没有选择表中的函数也会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com