Ruby

メソッド名に依らない再帰表現

More than 5 years have passed since last update.

def 将来名前を変更する可能性が高く、再帰で階乗を計算するメソッド(x)

(x == 1) ? 1 : x * 将来名前を変更する可能性が高く、再帰で階乗を計算するメソッド(x-1)
end

みたいな場合に、

def 将来名前を変更する可能性が高く、再帰で階乗を計算するメソッドの名前を変更しても中身を書き換えずに済む書き方をしたメソッド(x)

recursion = lambda{|x| __send__(__method__, x)}
(x == 1) ? 1 : x * recursion[x-1]
end

のように書くことでメソッド名に依らず再帰を表現できる。

のだけれども、メソッドごとにいちいち

recursion = lambda{|x| __send__(__method__, x)}

とか書くのも面倒くさいのでもっといい方法あれば教えてください


組み込みで__recursion__とか欲しい