-
Как вы называете оператор
->
следующим образом?->(...) do ... end
-
Не эквивалентны следующие фрагменты?
succ = ->(x) {x + 1} succ = lambda {|x| x + 1}
Что вы называете оператором → в Ruby?
Ответ 1
В языке программирования Ruby ("Методы, процедуры, лямбды и замыкания") лямбда, определенная с помощью ->
, называется лямбда-литералом.
succ = ->(x){ x+1 }
succ.call(2)
Код эквивалентен следующему.
succ = lambda { |x| x + 1 }
succ.call(2)
Неофициально, я слышал, что его называют "лямбда-сабли" или "буквально-сабля".
Ответ 2
=>
== Хэш-ракета
Отделяет ключи от значений в хеш-символе.
->
== Dash Rocket
Используется для определения лямбда-литерала в Ruby 1.9.X(без аргументов) и Ruby 2.X(с аргументами). Примеры, которые вы даете (->(x) { x * 2 }
и lambda { |x| x * 2 }
), фактически эквивалентны.
Ответ 3
Лямбда-ракета
Я получил это из этой статьи. Но сначала поиск Google рубиновая лямбда-стенография http://ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-ruby-1-dot-9-and-2-dot-0/
Ответ 4
->(x) {... }
- то же самое, что и lambda { |x|... }
lambda { |x|... }
Это создает лямбду. См. Ядро # лямбда. Лямбда - это тип процедуры, который гарантирует, что количество переданных ему параметров является правильным. Смотрите также Proc :: new и Kernel # proc.