2012-02-28 17 views
1

可能性の重複:.NETのToDictionaryに似たハッシュに配列を(変換する簡単な方法を探していたとき、私は次のコードを渡って走っ
What is the * operator doing to this string in RubyRubyの単項*演算子

IEnumerableのメソッド...私は任意にキーと値を設定できるようにしたい)。

a = [ 1, 2, 3, 4, 5, 6 ] 
h = Hash[ *a.collect { |v| [ v, v ] }.flatten ] 

私の質問は、a.collectより前のアスタリスクは何ですか?ところで

、コードは、あなたがそれをグーグルしたい場合には、スプラット・オペレータのhttp://justatheory.com/computers/programming/ruby/array_to_hash_one_liner.html

+0

ああ、それはまだ見つかりませんでした。アスタリスクは、GoogleとSOの検索から除外するため、検索するのが難しいです。 –

+0

さて、あなたはそれが "スプラット"と呼ばれていることを知っています。 :-) –

+0

助けてくれてありがとう@JoshLee。 –

答えて

4

から来ています。配列をリストに変換します(したがって、メソッドの引数として配列を使用できます)。逆もします:リストを配列にスラッシングすることができます。

require 'date' 
*date_stuff = 2012,2,29 # slurp 
p date_stuff #=> [2012, 2, 29] 
Date.new(*date_stuff) # regurgitate 
+0

反対の挙句のボーナス情報をありがとう。 –

+0

は 'a、b = * [:one、:two] 'ではありません。一般的なプログラミングでタプルと呼ばれていますか? – farnoy

+0

@fanoy - 私は一般的なプログラミングのタプルについて何も知らない。あなたのコードは動作します。それはスプラットなしでも動作します(それはちょっと奇妙です)。 – steenslag