Rubyのredoを使うと良い処理


繰り返し文の中で`redo`が使えることを初めて知り、動作についてはわかりました。  
具体的な処理としては毎ループ特定の変数の値を変更させて使うようですが、  
効率が悪かったり、読みづらい処理しか自分には思いつきませんでした。

具体的にどのような場合に`redo`を使えば処理がきれいに書けるのか何か例を一つ教えていただけないでしょうか？



[code]

    # -*- encoding: utf-8 -*-
    
    items = ["名前", "ニックネーム", "出身地", "座右の銘"]
    
    puts "あなたの情報を教えてください"
    
    p items.inject(Hash.new) {|h, i|
        print "#{i}は？: "
        redo if (h[i] = gets.chomp).empty?
        h
    }
    
[/code]



[code]

    # -*- encoding: utf-8 -*-
    
    items = ["名前", "ニックネーム", "出身地", "座右の銘"]
    
    puts "あなたの情報を教えてください"
    
    p items.inject(Hash.new) {|h, i|
        print "#{i}は？: "
        redo if (h[i] = gets.chomp).empty?
        h
    }
    
[/code]

