Comment appelez-vous l’opérateur -> dans Ruby?

  1. Comment appelez-vous l’opérateur -> comme suit?

     ->(...) do ... end 
  2. 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 /