好吧,我有金鱼的编程能力,所以我需要一些帮助。我有以下代码(请原谅我的幽默感):

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.'

它基本上工作正常,但我有一个问题:选择不选。我不知道怎样才能让它工作。它会很好地循环,选择yes选项也行。
基本上,我的问题是:如何创建一个有两个中断选项的循环?

最佳答案

对于这种情况,应该使用rubycase/when语句switch,因为拥有所有这些if/end块会很快让人困惑。
另外,请阅读本指南:https://github.com/bbatsov/ruby-style-guide
它将教你如何正确格式化你的ruby代码。

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中,可以执行以下操作:
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.'

看到这个答案:How to write a switch statement in Ruby

关于ruby - ruby 麻烦与循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21195789/

10-11 23:57
查看更多