Comment appelez-vous le ->
opérateur comme dans la suite?
->(...) 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 lambda littéral.
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 l'appelant stabby lambda ou stabby littéral.
=>
== Hash RocketSépare les clés des valeurs dans un littéral de carte de hachage.
->
== Dash RocketUtilisé pour définir un littéral lambda dans Ruby 1.9.X (sans arguments) et Ruby 2.X (avec arguments). Les exemples que vous donnez (->(x) { x * 2 }
& lambda { |x| x * 2 }
) sont en fait équivalents.
Lambda fusée
Je l'ai eu de cet article. Mais d’abord une recherche sur Google pour Ruby lambda raccourci http://Ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-) Ruby-1-point-9-et-2-point-0 /
->(x) { ... }
est identique à lambda { |x| ... }
. Cela crée un lambda. Voir Kernel # lambda Un lambda est un type de proc, celui qui assure que le nombre de paramètres qui lui sont transmis est correct. Voir aussi Proc :: new et Kernel # proc .