Ruby on rails ->;红宝石速记

Ruby on rails ->;红宝石速记,ruby-on-rails,ruby,friendly-id,Ruby On Rails,Ruby,Friendly Id,我正在浏览代码库,发现有以下任务: @defaults ||= ->(config) {config.use :reserved} 我的问题是: 我如何解释这行代码 ->到底是做什么的?它意味着什么 有没有关于它的文章,如何使用它?(Ruby官方文档会很好,我还没有找到) 感谢您的帮助这表示。这样,您就锁定了一个匿名函数,该函数接受一个参数配置并使用该变量计算一个块 上述表达式也可以定义为: @defaults ||= lambda {|config| config.use :reser

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

@defaults ||= ->(config) {config.use :reserved}
我的问题是:

  • 我如何解释这行代码
  • ->
    到底是做什么的?它意味着什么
  • 有没有关于它的文章,如何使用它?(Ruby官方文档会很好,我还没有找到)
  • 感谢您的帮助

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

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

    @defaults ||= lambda {|config| config.use :reserved}
    
    与Ruby中的
    lambda
    类似,只是返回和中断模式有一些不同。Proc可以作为保存为对象的块调用,而lambda是保存为对象的方法。它们植根于函数式编程

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

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

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

    现在它已经清楚了。Ruby 1.9中已经引入了这种速记。好的,谢谢你的回答。我每天都学新东西:)新格式的另一个有趣之处是可以为参数指定默认值。旧格式“inc=lambda{x | x+1}”与“inc=->(x=0){x+1}”相比,所以现在参数是可选的,没有指定参数的“inc.call”是#=>1这里有一个提示,当您使用堆栈溢出的内置弹性搜索进行搜索时,您可以通过将它们放在引号中来搜索代码。这就是我无法找到它的原因。我试过了,但不知道搜索的这个功能。谢谢你让我知道。下次我会使用它。请参阅更多搜索提示。