我的ruby代码似乎不起作用

时间:2018-03-21 04:24:58

标签: ruby

大家好,我的代码存在问题。当我添加下面的代码时,它无法工作。

until result || input == "quit" 

然而,当我删除该行的输入时,代码完全正常。

input = gets.chomp
print "you just told me #{input}"
result = " "

until result || input == "quit"
  result = gets.chomp
  if result == "quit"
    puts "Alright Goodbye"
  else
    puts "I heard #{results}"
  end
end

非常感谢你的帮助:)。

4 个答案:

答案 0 :(得分:0)

特里斯坦 您应该将result = " "更改为result = gets.chomp或删除result = " "并在您的语句中使用result = gets.chomp。基本上修复了Josh在评论中提到的内容

答案 1 :(得分:0)

您的脚本中有多个错误。我修改它以便它正在运行:

puts "Say something:"
input = gets.chomp
puts "you just told me #{input}"

while input != "quit"
  puts "Say something:"
  input = gets.chomp
  if input == "quit"
    puts "Alright Goodbye"
  else
    puts "I heard #{input}"
  end
end
  • 用户输入不需要两个单独的变量(resultinput),除非您需要两个变量
  • 您使用results代替result
  • 在红宝石中,除nilfalse之外的所有内容都被视为true。所以" ",但空字符串" "也是如此。

答案 2 :(得分:0)

您的意思是“直到结果或输入相等”退出“(其中任何一个)”? 如果是这样,这是一个经典的菜鸟错误。需要这样写:

result == 'quit' || input == 'quit'

答案 3 :(得分:0)

我可以在这里看到两个问题。

您永远不会定义名为results的内容,只会定义result。这可能会引发错误,指出results未定义。

此外,结果似乎没有添加任何内容,因为您的程序仅使用最近输入的信息,我将其简化为只有一个名为input的变量。

input = gets.chomp
print "you just told me #{input}"

until input == "quit"
  input = gets.chomp
  if input == "quit"
    puts "Alright Goodbye"
  else
    puts "I heard #{input}"
  end
end

此外,当until等于退出时,input数据块将移至您的计划结束,因此您也不需要同时检查if块中的条件。您可以将该条件的结果放在until块之后。

input = gets.chomp
until input == "quit"
  puts "I heard #{input}"
  input = gets.chomp
end
puts "Alright, Goodbye!"

基本上,您提供的代码远远多于此一项检查所需的代码。

我希望这会有所帮助。继续学习编码,这是一件非常有意义的事情。 :)