gpt4 book ai didi

Lua io.write() 向输出字符串添加不需要的 Material

转载 作者:行者123 更新时间:2023-12-04 07:49:58 24 4
gpt4 key购买 nike

当我启动交互式 Lua shell 时,io.write()在我想要打印的字符串之后添加不需要的 Material 。 print() ,但是不会:

[user@manjaro lua]$ lua
Lua 5.4.2 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> io.write('hello world')
hello worldfile (0x7fcc979d4520)
> print('hello world')
hello world
当我使用 io.write()在程序中它也能正常工作:
--hello.lua
io.write('hello world\n')
print ('hello world')
输出:
[user@manjaro lua]$ lua hello.lua
hello world
hello world
我在戴尔台式机上使用 Manjaro Linux。谁能告诉我这里发生了什么?提前致谢。
编辑:也许我应该补充一点,不需要的 Material 总是这样的:
file (0x7f346234d520)
它总是"file",后跟括号中看起来像一个大的十六进制数。确切的数字在一个 shell session 中保持不变,但在不同的 shell session 之间有所不同。

最佳答案

file (0x7fcc979d4520)”(或任何地址)是 io.write 的返回值调用,隐含 tostring .
lua(1) 手册页说

In interactive mode, lua prompts the user, reads lines from the standard input, and executes them as they are read. If the line contains an expression or list of expressions, then the line is evaluated and the results are printed.


这里的麻烦在于 io.write('hello world')可以是表达式或语句。由于它是一个有效的表达式,解释器输出不需要的返回值。
作为解决方法,请尝试添加分号:
> io.write('hello world\n');
hello world
尽管 Lua 通常不需要在每条语句的末尾使用分号,但它确实允许这样做。在这里很重要,它意味着语法不能是表达式,只能是调用函数的语句。所以解释器不会输出返回值。

关于Lua io.write() 向输出字符串添加不需要的 Material ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67034109/

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