2013-09-17 1 views
1

сегодня я следую за направляющие рельсы и запустить демо, которые включают в scope, как показано ниже:что разница между -> и => в рельсах

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

но он не работает, так что я изменяю:

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

теперь он работает, так что я хочу знать разницу между -> и => в рельсах , но я не нашел результат, поэтому, пожалуйста, скажите мне, спасибо.

ответ

3

=> отделяет ключи от значений в HashMap буквальный

-> - новый lambda (синтаксический сахар)

Примеры:

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

Почему это '# =>« привет », а не' # -> «привет»? :) – apneadiving

+0

Это потому, что нет такой вещи, как лямбда-возврат в рубине :) –

2

Первый - синтаксическая ошибка. Где бы вы ни читали это, это совершенно неправильно.

Второй широко известен как «Stabby синтаксис лямбда» - его ярлык для записи:

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

Подробнее о лямбдах в Ruby: http://rubymonk.com/learning/books/1-ruby-primer/chapters/34-lambdas-and-blocks-in-ruby/lessons/77-lambdas-in-ruby

Смежные вопросы