我们知道,在Ruby 1.9中有几种Proc调用方式
f =->n {[:hello, n]}
p f[:ruby] # => [:hello, :ruby]
p f.call(:ruby) # => [:hello, :ruby]
p f.(:ruby) # => [:hello, :ruby]
p f === :ruby # => [:hello, :ruby]
Run Code Online (Sandbox Code Playgroud)
我很好奇,什么是更自然的方式调用Proc?"自然"可能意味着更多的计算机科学 - 就像这样.
第二种选择是目前使用最多的选项.
p f.call(:ruby) # => [:hello, :ruby]
Run Code Online (Sandbox Code Playgroud)
它使它更类似于标准方法.此外,在验证检查#call方法可用性的参数时,某些库实际上依赖于duck typing .在这种情况下,使用#call确保您可以提供响应的lambda或任何其他对象(包括类)#call.
Rack中间件是这个约定的一个很好的例子.基本中间件可以是lambda,也可以通过使用类来提供更复杂的逻辑.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |