2010-11-12 17 views
16

Olası Çoğalt:Ruby'de * (yıldız) ne anlama geliyor?

ben haklıyım olursa ...
What is the * operator doing to this string in Ruby

Muhtemelen başka bir yerde bunun için cevap vardır, ama sadece bulmak için nasıl bilmiyorum *, işlev tanımında kullanılırsa birden çok parametre anlamına gelir:

Ama * böyle kodda yapar neler:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"} 
+0

Olası kopya: http://stackoverflow.com/questions/918449/what-is-the-operator-doing-to-this-string-in-ruby –

cevap

33

Değişken Uzunluk Argüman listesi, Asterisk Operatörü

bir yöntemin son parametre bazen bir yıldız (*), öncesinde edilebilir 'uyarısı' operatörü denir. Bu, işleve daha fazla parametrenin geçirilebileceğini gösterir. Bu parametreler toplanır ve bir dizi oluşturulur.

Yıldız işareti operatörü, bir yöntem çağrısı sırasında bir Array argümanından da önce gelebilir. Bu durumda, Array genişletilecek ve değerler virgülle ayrılmış gibi geçecek.

+1

Ayrıca Variadic işlevi çağrılır –

+3

Tam bir açıklama değil. Splat operatörü http://theplana.wordpress.com/2007/03/03/ruby-idioms-the-splat-operator/ –

+0

olarak adlandırılır. bir yöntemin son parametresi. Rails rota haritalamadaki kaynak fonksiyonu ile buna rastladım. Ruby'ye yeniyim ve belki de daha fazlası çünkü & block parametresi özel bir durumdur. – DustinA