有什么区别 - >和=>在铁轨

时间:2013-09-17 07:41:17

标签: ruby-on-rails

今天我按照导轨指南运行一个演示,其中包含scope,如下所示:

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

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

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

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

2 个答案:

答案 0 :(得分:3)

=>将键与hashmap文字中的值分开

-> - 新lambda(语法糖)

示例:

h = { "foo" => "bar" }
l = ->{ "hello" }
l.call # => "hello"

答案 1 :(得分:2)

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

第二种通常被称为“stabby lambda syntax” - 它是写作的捷径:

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

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