Rails hat Symbol#to_proc populär gemacht. So sehr dass es sogar Teil von Ruby 1.9 werden wird.
String#to_proc implementiert. Das sieht folgendermassen aus:
'x+1'.to_proc[2] # => 3 'x+2*y'.to_proc[2, 3] # => 8
Symbol#to_proc verwendet wird, braucht man String#to_proc nicht. Verglichen mit
%w[dsf fgdg fg].map(&:capitalize)
%w[dsf fgdg fg].map(&'.capitalize')
(1..5).map &'*2' # => [2, 4, 6, 8, 10]
(1..5).inject &'+' # => 15
Kommentar schreiben
Kommentare
Ich sehe da noch eine ganz andere Richtung, in die das mal führen könnte - aus meiner Sicht endlich. Bisher habe ich ja noch nicht die Möglichkeit Ruby-Code zu manipulieren. Das meine ich in dem Sinne, dass ich nur durch ziemlich trickreiches Vorgehen an den Quellcode eine Methode oder Funktion (=Proc-Obkject) herankomme. Hier habe ich mir oft schon die Möglichkeiten gewünscht, die mir Lisp 1.5 mal geboten hat - selbstmodifizierende Programme waren da kein Problem. Ruby hatte ja auch mal angefangen in diese Richtung zu denken. Mal sehen was da noch weiter kommt.
Für die Kurzbeispiele reichts: class String def to_proc eval(" lambda { |#{scan(/[^a-zA-Z]*([a-zA-Z])[^a-zA-Z]*/).uniq.join(',')}| eval(self) } ") end end