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

africwildman · June 07, 2015 · Last by cicholgricenchos replied at June 18, 2015 · 2317 hits

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,但实际上还是原来那个

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