Eine smarte Anwendung des redos-Befehls sehen wir in diesem Einzeiler von Marcus Holm:
>> (0..9).map{rand(?z).chr[/[^_\W]/]||redo}*""
=> "H8epSomSCc"
redo springt (ähnlich wie skip) zum Anfang eines loop oder eines Blocks. Der Unterschied besteht darin, dass redo die selbe Iteration erneut ausführt und nicht die nächste. Ein Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 |
puts "Please enter the first word you think of" words = %w(apple banana cherry) response = words.collect do |word| # Control returns here when redo is executed print word + "> " # Prompt the user response = gets.chop # Get a response if response.size == 0 # If user entered nothing word.upcase! # Emphasize the prompt with uppercase redo # And skip to the top of the block end response # Return the response end |
In seinem Blog werden dafür praktische Beispiele gegeben: tailin-ruby.html
Nebensache: Diagramm-Engine mit JScript
Bei der Darstellung seiner Benchmarkergebnisse verwendet der Autor einen recht hübschen Diagrammmechanismus: Diagramm-Beispiel
Das Diagramm ist interaktiv klick- und ziehbar! Es benutzt JQuery und einen Plotting-Zusatz, um die Grafiken zu generieren.
