私はRubyを学び始めています。私はその方法を参考にして渡された議論を読んでいますが、私はこれら2つの方法の違いを理解していません。 *
を使用してこれらの2つのメソッドパラメータ定義の違いは何ですか?
def print(text)
puts text
end
と
def print(*text)
puts text
end
たちはCのようにポインタを渡していることを意味しますか?
私はRubyを学び始めています。私はその方法を参考にして渡された議論を読んでいますが、私はこれら2つの方法の違いを理解していません。 *
を使用してこれらの2つのメソッドパラメータ定義の違いは何ですか?
def print(text)
puts text
end
と
def print(*text)
puts text
end
たちはCのようにポインタを渡していることを意味しますか?
*テキストは、Rubyでスプラット演算子と呼ばれるものです。基本的には、複数の引数を2番目のプリントに渡すと、1つのテキスト変数にスラップされます。
Rubyパラメータリストのパラメータ名がvariable length argumentsになる前に*
が使用される前に、それらはvarargsのC/C++の...
に似ています。
def vlaFunc(*args)
puts args
end
vlaFunc(1,2,3)
# output is [1,2,3]
ルビー、*
にはポインタがこのコンテキストではありませんが、一般的に "スプラット" 演算子と呼ばれて参照してくださいに
この場合、メソッドは任意の数の引数を取ることができます。配列text
にあります。
私はむしろルビに*唯一のポインタがあると言うでしょう:-) –
Hehe、誰かがそれを言うかもしれませんが、Ruby初心者スレッドではないかもしれません。 ;-) –
まず、そこから始めた2つの素敵な方法があります。しかし、私はそれらの中にputsを使用しないでください。あなたはとにかくそれを必要としません。メソッドは常に評価された最後のステートメントを生成します。 something = textは仕事を終わらせます。そして、私は違いについて今は答える必要はありません。 あなたの最初の2つの返信はとても良いです。しかし、あなたはこのようなものを試してみたいかもしれません。 j = * []#=> nil 1.8で、[]は1.9で 今、それは何かを推測する?
ありがとうございます。 –