nak*_*bag 2 ruby loops conditional-statements
刚开始在 Ruby 中学习循环和流控制,并坚持了这个练习。我一直在测试和寻找答案,但没有找到任何答案,所以我在这里发帖。
如果我有这样的代码设置:
ask_play = ''
loop do
print "Play?: "
ask_play = gets.chomp
break if (ask_play == 'n') || (ask_play == 'N')
end
Run Code Online (Sandbox Code Playgroud)
然后我在输入 n 或 N 后退出循环。
但是,如果我的代码设置如下:
ask_play = ''
play_stop = (ask_play == 'n') || (ask_play == 'N')
loop do
print "Play?: "
ask_play = gets.chomp
break if play_stop
end
Run Code Online (Sandbox Code Playgroud)
该条件似乎不起作用。即使在输入 n 或 N 之后,我仍然继续循环,我只是不明白为什么。
play_stop = (ask_play == 'n') || (ask_play == 'N')在循环开始之前被评估。它将play_stop变量设置为,false因为ask_play您分配给空字符串的变量既不是 也不n是N。看起来你想封装条件的逻辑。您可以创建一个方法并将值传递给它。
def play_stop(input)
input == 'n' || input == 'N'
end
loop do
print "Play?: "
ask_play = gets.chomp
break if play_stop(ask_play)
end
Run Code Online (Sandbox Code Playgroud)