Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 Ruby 2.5 进行测试。我有以下代码。
p = proc {|e| puts e} def test &b b.call 1 if block_given? end test &p
输出是:
1
&b将使变量b捕获传入的块。但在演示中,我没有障碍。我拥有的是一个原始的 proc 对象(不是 lambda)。&p就像我写的一样,它似乎将 proc 对象转换回了一个块test {|e| puts e}。这是真的吗?在这里做什么&?
&b
b
&p
test {|e| puts e}
&
在这里做什么&?
正是如此,将 proc 转换为块。
我没有块。我拥有的是一个原始 proc 对象(不是 lambda)
您是否认为这些(proc 和 lambda)是两个完全不同的实体?他们不是。它们几乎是一样的。
proc {} # => #<Proc:0x00007fe50882ecc8@-:1> -> {} # => #<Proc:0x00007fe50882e840@-:2 (lambda)>
&就运营商而言,当然是同样的事情。