5
在Perl中,我們可以使用__SUB__
來獲取對當前子例程的引用。 Ruby有類似嗎?用於Ruby的Perl的__SUB__模擬器
例如,讓我們寫在Perl匿名階乘子程序:
my $fact = sub {
$_[0] > 1 ? $_[0] * __SUB__->($_[0] - 1) : 1;
};
在Ruby中我會首先創建一個名爲方法,然後將其轉換爲拉姆達:
def factorial(n)
n > 1 ? n * factorial(n - 1) : 1
end
fact = method(:factorial).to_proc
我覺得這是不是編寫遞歸lambda表達式的最佳方法。我錯過了什麼?
不知道有什麼內置的,但你可以[在紅寶石(鏈接)Y-組合子(http://www.sbf5.com/~使用cduan/technical/ruby/ycombinator.shtml)以避免命名該方法=) – maerics
@maerics,如果你只是發佈,並在這裏如何使用y-combinator,這將是一個答案。 – ikegami
@maerics,謝謝。不是我正在尋找的,但它的工作原理。 – user2422869