31

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

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

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

def hero(name, *super_powers)

しかし、*このようなコードでは何が行われますか?

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

1 に答える 1

64

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

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

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

于 2010-11-12T23:56:41.443 に答える