【问题标题】:Ruby- gets issueRuby- 出现问题
【发布时间】:2019-12-11 20:24:13
【问题描述】:

我目前正在学习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 中的两个语句:print "Name? ",然后是name = gets。请注意,如果用户输入"Bob"(然后按“Enter”键),则name 将设置为等于"Bob\n"。如果您不想要换行符,通常写成name = gets.chomp,这会将name 设置为等于"Bob"

标签: ruby gets puts


【解决方案1】:

您可以编写自己的 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}"

有关此处使用的方法的更多信息。见这些:

【讨论】:

  • 有什么方法可以让它变得更简单吗?但仍然非常感谢,正是我需要的:)
  • 最简单的工作代码,如果您可以在提示后接受换行符是:puts 'Name?'; name = gets.chomp; puts "Welcome #{name}"
  • 不幸的是产生了Bob Name? Welcome Bob Process finished.
  • 您是否在 IDE 中运行它?在您的控制台中尝试。我认为 IDE 不适合这样的用户输入处理。 IE。这闻起来像是 IDE 问题,而不是 Ruby 问题。
  • 是的。它在 Windows 和 Linux / OSX 的控制台中都能正常工作。
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多