1

今日、私はレールガイドに従い、以下を含むデモを実行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

1 つ目は構文エラーです。どこを読んでも、それは完全に間違っています。

2 つ目は一般に「安定したラムダ構文」として知られています。

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

于 2013-09-17T07:59:20.947 に答える