Ruby-发行问题

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

我目前正在学习ruby,我不知道我做错了什么还是编译器在做,但是这段代码:

puts "Name?"
name = gets
puts "Welcome " + name

输出:

#blank line waiting for input, if gotten input
Prints input, Name? And Welcome Name

我希望它做类似python的input(“ Name?”)

ruby gets puts
1个回答
0
投票

您可以编写自己的Python等效input方法:

def input(prompt)
  print(prompt)   # Output prompt
  $stdout.flush   # Flush stdout buffers to ensure prompt appears
  gets.chomp      # Get user input, remove final newline with chomp
end

现在我们可以尝试:

name = input('What is your name? ')
puts "Welcome #{name}"

我们需要在flush方法中调用input的原因是,除非字符串包含换行符,否则Ruby不会自动刷新操作系统缓冲区,并且直到从别的地方。因此,为了强制显示提示而不显示换行符,我们调用flush

请参阅此处的文档以获取更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.