意思是 - > Ruby中的简写

Tom*_*ert 2 ruby ruby-on-rails friendly-id

我在浏览Friendly_id宝石的代码库,我发现线与分配如下:

@defaults ||= ->(config) {config.use :reserved}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

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

谢谢您的帮助

kid*_*ils 12

这表示lambda.有了这个,您将锁定一个匿名函数,该函数接受参数配置并使用该变量计算块.

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

@defaults ||= lambda {|config| config.use :reserved}
Run Code Online (Sandbox Code Playgroud)

Proc类似于lambdaRuby,除了返回和中断模式的差异很小.Proc可以被称为保存为对象的块,而lambda是保存为对象的方法.他们找到了功能编程的根源.

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

inc = ->x{ x + 1 }
inc.call(3)
#=> 4
Run Code Online (Sandbox Code Playgroud)

一个常见且有趣的例子lambdaRails Scope,其中一个方法在名称范围内简单地分配为lambda,稍后可以在ActiveRecord查询时用作动作.