Ruby Add a pointer in a lambda to point to current lambda.

zw963 · June 01, 2014 · Last by zw963 replied at June 03, 2014 · 1638 hits

e.g. named this pointer as this.

def fibonacci
  memo = [0, 1]
  ->(n) { memo[n] ||= this.call(n-1) + this.call(n-2) }
end

fibonacci.call(100) # => 354224848179261915075

instead of:

def fibonacci
  memo = [0, 1]
  feb  = ->(n) { memo[n] ||= feb.call(n-1) + feb.call(n-2) }
  feb
end

fib.call(100) # => 354224848179261915075
1 Floor has deleted

#1 楼 @zw963 那个不是本人

@luikore 啊,师傅你在线。

怎么没看到你上 Gtalk ... : (

good tip :plus1:

很早以前就觉得应该弄成这样了。。

#5 楼 @Tony612 #6 楼 @iBachue

这是我第一次将 lambda 用作递归用途,还是参考 js 才发现这个用法的,还是蛮有趣的。

不过,改写成一个类的方式来实现,也许更加符合大众的口味。

You need to Sign in before reply, if you don't have an account, please Sign up first.