2015-06-26 2 views
1

Что является оператором -> в следующем?`->` оператор с областями

scope :published, -> { where(published: true) } 

scope является метод, :published символ передается в качестве аргумента, что приводит меня к мысли, что -> { where(published: true) } составляет следующий аргумент. -> не является допустимым именем метода из-за наличия символа >.

+0

Google для рубинового оператора лямбда – juanpastas

+0

Он называется «лямбда-литерал» или «прочный лямбда». Это всего лишь способ создания лам. –

ответ

2

Это называется лямбда-литералом, и это всего лишь короткий способ создания лам. После такого же:

double = -> (x) { 2 * x } 
double.call(10) # => 20 

эквивалентен:

double = lambda {|x| 2 * x } 
double.call(10) # => 20 

Incase вы не знакомы с лямбдой, то кассе рубинового документом для получения более подробной информации http://ruby-doc.org/core-2.0.0/Proc.html#method-i-lambda-3F

Кроме того, контроль следующего StackOverflow нити What do you call the -> operator in Ruby?