どのような(単項)*オペレーターがこのRubyのコードについて教えてください。
質問
さらにRubyのコード
line = "first_name=mickey;last_name=mouse;country=usa"
record = Hash[*line.split(/=|;/)]
理解していくのかに *
オペレーター-何でこのドキュメンテーションに。というのを探しの場合は証明ハード...)
解決
*
はのスプラットの演算子ます。
これは、この場合には、引数のリストにArray
メソッドの引数のリストをHash.[]
を拡張します。 (より正確には、それはルビー1.9 / to_ary
、又はto_a
をto_a
に応答する任意のオブジェクトを拡張する。)
説明するために、以下の2つのステートメントは同じである
method arg1, arg2, arg3
method *[arg1, arg2, arg3]
また、メソッド定義に残りのすべてのメソッドの引数をキャッチするために、異なるコンテキストで使用することができます。その場合には、それが展開するが、結合しない。
def method2(*args) # args will hold Array of all arguments
end
ここを 他のヒント
スプラット演算子は、関数に渡された配列をアンパックします。
簡単な例:
>> def func(a, b, c)
>> puts a, b, c
>> end
=> nil
>> func(1, 2, 3) #we can call func with three parameters
1
2
3
=> nil
>> list = [1, 2, 3]
=> [1, 2, 3]
>> func(list) #We CAN'T call func with an array, even though it has three objects
ArgumentError: wrong number of arguments (1 for 3)
from (irb):12:in 'func'
from (irb):12
>> func(*list) #But we CAN call func with an unpacked array.
1
2
3
=> nil
それはそれだ!
としてのみ言及していまsplat".みRubyの構文は不可能で、またこの他の質問をします。の答えの問題で検索
asterisk in ruby syntax
Google.Googleで確認していくしかありませんで入れていました。
Anyhooのように、多くのRubyコード、コードは非常に緻密.の
line.split(/=|;/)
からなる配列の要素 first_name, mickey, last_name, mouse, country, usa
.その後、splatて使用されるハッシュ.現在のRuby人が常時送信、Splat方法、それらのRubyなどがある。わたしにはわかりませんがまさしくその通りなのだが、そのままだと運 for
の配列およびビルドのハッシュ.
うためのコードを コア ます。が見つからない場合はでない)という書いてみよう一部のコードのようなことをなRubyコード):
line = "first_name=mickey;last_name=mouse;country=usa"
presplat = line.split(/=|;/)
splat = Hash.new
for i in (0..presplat.length-1)
splat[presplat[i]] = presplat[i+1] if i%2==0
end
puts splat["first_name"]
そして、Rubyの暴かどうかを知ることができますかコードは馬鹿げてたり、悪いので、ただのが間違っている。
まっころ、読み込みを通じて ハッシュ 書類を設定する処理です。
基本的にはハッシュが初期化された複数の引数を作成してキーと値のペア:
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
そこでの例ではこのハッシュ:
{"first_name"=>"mickey", "last_name"=>"mouse", "county"=>"usa"}