我正在学习RUBY,但我遇到了重做方法的问题。我正在玩循环和迭代器试图得到它们的悬念。我有以下代码:
def question (quest , ans )
puts quest
a = gets.chomp
if a == ans
puts "good job"
else
puts "Try Again!"
a = gets.chomp
redo
end
end
只要重做在方法中,一切正常。我希望块重新运行,直到用户输入正确的答案。有人可以说这个街区有什么不对吗?
答案 0 :(得分:4)
redo
,与retry
一样,将在循环中使用。
您可以将代码更改为
def question(quest, ans)
puts quest
puts "Try Again!" while gets.chomp != ans
puts "good job"
end
答案 1 :(得分:2)
redo
应该在循环中使用,它会重复当前的迭代,因此在您的代码中,如果您想使用redo
将其置于某个循环中,例如。
def question (quest , ans )
1.times do
puts quest
a = gets.chomp
if a == ans
puts "good job"
else
puts "Try Again!"
redo
end
end
end
这将开始工作,虽然这是违反直觉的,你是循环一次,但你不是:)
这种情况的更好方法是循环直到你得到答案。