红宝石麻烦与循环

iwantcandy2

好的,我具有金鱼的编程能力,因此可以使用一些帮助。我有以下代码(请原谅我可怕的幽默感):

puts 'Do you have a middle name?'
answer=gets.chomp.downcase
 while true 
 if answer != ('yes' || 'no')
  puts 'Yes or no answers only, dumbass.'
  puts 'So I\'ll ask again. Do you have a middle name?'
  answer=gets.chomp.downcase
elsif answer == ('yes' || 'no')
if answer == 'yes'
  puts 'Cool. What is it?'
  middlename=gets.chomp
  puts middlename +'? That\'s dumb.'
  break
if answer == 'no'
  puts 'I guess you aren\'t cool enough.'
  break
end
end
end
end
puts 'Well, smell ya later.'

它通常可以正常工作,但是我有一个问题:选择no选项。我不知道如何使它工作。它将正常循环,并选择yes选项有效。

基本上,我的问题是:如何创建带有两个break选项的循环?

快取

对于这样的事情,您应该使用a case/when,它是一个Rubyswitch语句,因为拥有所有这些if/end块会很快造成混乱。

另外,请阅读此指南: https : //github.com/bbatsov/ruby-style-guide它将教您如何正确格式化红宝石代码。

puts 'Do you have a middle name?'
answer=gets.chomp.downcase

case answer
when 'yes' 
  puts 'Cool. What is it?'
  middlename=gets.chomp
  puts middlename +'? That\'s dumb.'
when 'no'
  puts 'I guess you aren\'t cool enough.'
else  
  puts 'Yes or no answers only, dumbass.'
  puts 'So I\'ll ask again. Do you have a middle name?'
  answer=gets.chomp.downcase
end

puts 'Well, smell ya later.'

如果你一直希望loop他们不在yes不回答的话no您可以通过将代码块包装为a来做到这一点,loop如下所示:

puts 'Do you have a middle name?'
answer=gets.chomp.downcase

loop do
  case answer
  when 'yes' 
    puts 'Cool. What is it?'
    middlename=gets.chomp
    puts middlename +'? That\'s dumb.'
    break
  when 'no'
    puts 'I guess you aren\'t cool enough.'
    break
  else  
    puts 'Yes or no answers only, dumbass.'
    puts 'So I\'ll ask again. Do you have a middle name?'
    answer=gets.chomp.downcase
  end
end

puts 'Well, smell ya later.'

看到这个答案:如何在Ruby中编写switch语句

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章