Seriennummern in 42 Zeichen: redo 0

Posted by fwoeck
on Wednesday, February 18

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.

Weblinks

  1. code.google.com/p/flot
  2. github.com/judofyr/recursive/tree/master
Comments

Leave a response

Comment