Rubyの便利な書き方だなと思って記事にしました。
まずは、行ったことがありますか?の回答に「ある」となるまで処理を繰り返します。
areas = ['東京', '北海道', '沖縄'] areas.each do |area| # sampleでランダムに選択 answer = ['ある', 'ない'].sample puts "#{area}に行ったことありますか?#{answer}" redo unless answer == 'ある' end # => 東京に行ったことありますか?ない # => 東京に行ったことありますか?ない # => 東京に行ったことありますか?ない # => 東京に行ったことありますか?ある ★次に行く # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ある ★次に行く # => 沖縄に行ったことありますか?ある ★次に行く
「ある」となったときに次のareaに移っていますね。
次に上記の書き方だと永遠と続く可能性もあります。
回数制限を設けたのが以下の例になります。
areas = ['東京', '北海道', '沖縄'] count = 0 areas.each do |area| count += 1 answer = 'ない' puts "#{area}に行ったことありますか?#{answer}" redo if answer != 'ある' && count < 2 count = 0 end # => 東京に行ったことありますか?ない # => 東京に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 北海道に行ったことありますか?ない # => 沖縄に行ったことありますか?ない # => 沖縄に行ったことありますか?ない
「ある」とあるまで処理をやり直すのですが2回未満までとなっているので
2回ずつ処理をして終わっていますね。
何か参考になれば幸いです(*^^*)