In Perl können wir __SUB__
verwenden, um die Referenz auf das aktuelle Unterprogramm zu bekommen. Gibt es ein Analogon für Ruby?Perl __SUB__ analog für Ruby
Zum Beispiel lassen Sie sich ein anonymes faktorielles Unterprogramm in Perl schreiben:
my $fact = sub {
$_[0] > 1 ? $_[0] * __SUB__->($_[0] - 1) : 1;
};
In Ruby würde ich eine benannte Methode zuerst erstellen und dann auf Lambda konvertieren:
def factorial(n)
n > 1 ? n * factorial(n - 1) : 1
end
fact = method(:factorial).to_proc
Ich fühle es ist nicht der beste Weg, rekursive lambdas zu schreiben. Habe ich etwas verpasst?
nicht sicher, ob es etwas gibt, built-in, aber man konnte die [y-combinator in Ruby (link)] verwenden (http://www.sbf5.com/~ cduan/technisch/ruby / ycombinator.shtml) zu vermeiden, dass die Methode der Benennung =) – maerics
@maerics, Wenn Sie einfach nur, dass und wie hier posten den y-combinator zu verwenden, wäre es eine Antwort sein. – ikegami
@maerics, danke. Nicht genau das, was ich suche, aber es funktioniert. – user2422869