1

今天我按照 Rails 指南运行了一个演示,其中包括scope如下:

scope :me, =>(keyword){where("title = ?",keyword)}

但它不起作用,所以我改为:

scope :me, ->(keyword){where("title = ?",keyword)}

现在它可以工作了,所以我想知道rails之间的区别,->=>我没有找到结果,所以请告诉我,谢谢。

4

2 回答 2

3

=>将键与哈希映射文字中的值分开

->- 新的lambda(语法糖)

例子 :

h = { "foo" => "bar" }
l = ->{ "hello" }
l.call # => "hello"
于 2013-09-17T08:00:55.877 回答
2

第一个是语法错误。无论你在哪里读到,都是完全错误的。

第二个通常被称为“stabby lambda 语法”——它是写作的捷径:

lambda { |keyword| where('title = ?', keyword) }

更多关于 Ruby 中的 lambda:http ://rubymonk.com/learning/books/1-ruby-primer/chapters/34-lambdas-and-blocks-in-ruby/lessons/77-lambdas-in-ruby

于 2013-09-17T07:59:20.947 回答