Comment appelez-vous l’opérateur ->
comme suit?
->(...) do ... end
Les extraits suivants ne sont-ils pas équivalents?
succ = ->(x) {x + 1} succ = lambda {|x| x + 1}
Dans Ruby Programming Language (“Méthodes, Procs, Lambdas et Fermetures”), un lambda défini à l’aide de ->
s’appelle littéralement lambda .
succ = ->(x){ x+1 } succ.call(2)
Le code est équivalent au suivant.
succ = lambda { |x| x + 1 } succ.call(2)
De manière informelle, j’ai entendu parler de stabby lambda ou de stabby literal .
=>
== Hash Rocket Séparer les clés des valeurs dans un littéral de hachage.
->
== Dash Rocket Utilisé pour définir un littéral lambda dans Ruby 1.9.X (sans args) et Ruby 2.X (avec args). Les exemples que vous donnez ( ->(x) { x * 2 }
& lambda { |x| x * 2 }
) sont en fait équivalents.
Fusée lambda
Je l’ai eu de cet article. Mais d’abord une recherche google pour stresse Ruby Lambda http://ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-ruby-1-dot-9-and-2-dot -0 /