web-dev-qa-db-ja.com

Rubyで*(星)はどういう意味ですか?

重複の可能性:
Rubyでこの文字列に対して*演算子は何をしているのか

おそらく他の場所でその答えがありますが、私はそれを見つける方法がわかりません...

私が正しければ、*は、関数定義で使用される場合、複数のパラメーターを意味します。

def hero(name, *super_powers)

しかし、*次のようなコードで実行します:

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

可変長引数リスト、アスタリスク演算子

メソッドの最後のパラメーターの前にアスタリスク(*)を付けることができます。これは、「スプラット」演算子と呼ばれることもあります。これは、より多くのパラメーターが関数に渡される可能性があることを示しています。これらのパラメーターが収集され、配列が作成されます。

アスタリスク演算子は、メソッド呼び出しでArray引数の前に置くこともできます。この場合、配列は展開され、値はコンマで区切られているかのように渡されます。

49
osgx