Ruby问题:我的“ gets”函数在我的“ puts”语句之前执行

问题描述 投票:0回答:2

我正在学习Ruby,并尝试了一个简单的代码:

system "clear"
print "What is your name?"
name = gets.chomp
puts name
puts "Hello #{ name.capitalize }, how are you?"

并且输出输出已准备就绪,无需显示请求的打印。然后在输入字符串后显示打印内容:

George
What is your name?George
Hello George, how are you?

请帮助。我很迷惑。谢谢!

ruby
2个回答
3
投票

这很可能是由输出缓冲引起的,应该通过在第一个$stdout.sync = true语句之前添加print来解决。

[另一种解决方法是在$stdout.flush语句后调用print手动刷新输出,或将print替换为puts(但这会添加换行符)。


0
投票

我只是将OP的代码复制到了我的编辑器(VS代码)中,但我不了解OP的功能。我得到

What is your name?George
George
Hello George, how are you?

而不是

George
What is your name?George
Hello George, how are you?
© www.soinside.com 2019 - 2024. All rights reserved.