Ruby 王银说 Ruby 先后出现过四种类似 lambda 的东西,是哪四种?

africwildman · 2015年06月07日 · 最后由 cicholgricenchos 回复于 2015年06月18日 · 2316 次阅读

http://www.yinwang.org/blog-cn/2015/04/03/paradigms/ 这里面说的,Ruby 先后出现过四种类似 lambda 的东西。 惭愧,我只知道两种,proc 和 lambda。

do…end 的 block 和 {}的 block,我猜

#3 楼 @luikore

"block 如果不在参数中写 &block 的话,是不生成新对象的,是纯粹的控制流跳转,如果写了,生成 proc 对象"

这个说的是 yield 和 Proc#call 吗?

#4 楼 @theblock24block 但是否生成新对象还是看是否在参数列表中写了 &block

#5 楼 @luikore 其实写了&block 也未必会生成新对象

a = ->{}

def test &b
  b.object_id
end

test(&a) == a.object_id # => true

看上去是把 a 拆成 block 再组装成一个 proc,但实际上还是原来那个

需要 登录 后方可回复, 如果你还没有账号请 注册新账号