2012-03-28 56 views

回答

35

A嵌段是不拉姆达。要查看是否有块使用block_given?

在任何情况下,我会使用“响应呼叫”当且仅当我真的需要这个构造,我会尽量避免。 (定义合同,使呼叫者负责正确调用它!)

(lambda {1}).respond_to? :call # => true 
(1).respond_to? :call   # => false 

我相信这种形式的结构(又名鸭)输入更内嵌红宝石比主格打字用“是一个“关系。

要了解什么是“是”的关系可能会保持(对未来的演奏在沙箱):

RUBY_VERSION   # => 1.9.2 
(lambda {}).class  # => Proc 
(Proc.new {}).class # => Proc 
def x (&p); p; end  # note this "lifts" the block to a Proc 
(x {}).class   # => Proc 

编码愉快。

+0

非常酷,有一个'respond_to?'方法。使这些事情变得更容易。 – Automatico 2013-12-08 22:47:49