Ich möchte den Block als Zeichenfolge definieren, erstellen Sie dann das Lambda. Das folgende Beispiel funktioniert nicht. Ist so etwas möglich?Erstellen Sie einen Ruby Proc aus einer Zeichenfolge
code_string = "|x|x*2"
l = lambda {eval(code_string)}
l.call(3) => 6
meine ich nicht unhöflich klingen, aber warum in der Welt tun Sie dies tun wollen? 'eval' ist fast nie der beste Weg etwas zu tun, nur um der Effizienz willen. – Chuck
Dies scheint definitiv ziemlich hacky –
Manchmal müssen Sie Code "on-the-fly" generieren, oft aus einer Quelle, die nicht Ruby-Code ist. Ich benutze diese Technik, um einen Transpiler zu implementieren. –