含义 - > Ruby中的简写

时间:2014-05-29 21:01:03

标签: ruby-on-rails ruby friendly-id

我正在浏览Friendly_id gem代码库,我发现line有以下任务:

@defaults ||= ->(config) {config.use :reserved}

我的问题是:

  1. 如何解释这一行代码?
  2. 究竟->做了什么以及它意味着什么?
  3. 是否有任何关于它的文章,如何使用它?(官方Ruby文档会很好,我还没有找到它)
  4. 感谢您的帮助

1 个答案:

答案 0 :(得分:12)

这表示lambda。使用此功能,您将锁定一个匿名函数,该函数接受参数 config 并使用该变量计算块。

上述表达式也可以定义为:

@defaults ||= lambda {|config| config.use :reserved}
除了返回和中断模式的差异之外,

Proc与Ruby中的lambda类似。 Proc 可以作为保存为对象的块调用,而 lambda 是保存为对象的方法。他们找到了函数式编程的根源。

简而言之,lambda是一个命名过程,可以保存为对象,稍后可以调用。

inc = ->x{ x + 1 }
inc.call(3)
#=> 4

lambda的一个常见而有趣的例子是Rails Scope,其中一个方法在名称范围内简单地指定为lambda,稍后可以在ActiveRecord查询时用作操作。