1. ホーム
  2. ruby

[解決済み] このRubyのコードでは、(単項)*演算子は何をするのでしょうか?

2022-04-16 20:04:12

質問

Rubyのコードがある場合

line = "first_name=mickey;last_name=mouse;country=usa" 
record = Hash[*line.split(/=|;/)] 

を除けば、2行目の内容はすべて理解しています。 * この演算子は何をするものなのでしょうか?(ご推察の通り、このケースを検索するのは困難です...)

解決方法は?

その * スプラット 演算子を使用します。

を展開します。 Array を引数のリストに変換します。この場合、引数のリストは Hash.[] メソッドを使用します。(に応答するすべてのオブジェクトを展開します。 to_ary / to_a または to_a Ruby 1.9の場合)。

説明のために、次の2つの文は等しい。

method arg1, arg2, arg3
method *[arg1, arg2, arg3]

また、別の文脈で、メソッド定義に残っているすべてのメソッド引数をキャッチするために使用することができます。その場合、展開するのではなく、結合します。

def method2(*args)  # args will hold Array of all arguments
end

より詳細な情報はこちら .