Techioz Blog

Ruby のメソッドで ARGV を使用する方法 [終了]

概要

誰かがRubyのメソッドでARGVを使用する簡単な例を教えてください。私はそれをよりよく理解する必要があるので、使用してみました

def greet(ARGV)
  puts "Hello #{ARGV}"
end

解決策

メソッド引数を収集するために定数、特に ARGV のような特殊な定数を使用しないでください。代わりに、位置引数または収集位置引数を使用してください。

ARGV は、Ruby で事前定義されたグローバル定数です。これは、Ruby インタプリタに渡される引数を含む文字列値の配列と考えることができますが、技術的には実行時に再定義できますが、ほとんどの場合はそれを行うべきではありません。また、グローバル定数をメソッド定義。

ARGV は、ゼロベースを除く Bash の位置引数のようなインタープリタに渡される引数の配列のように機能します。 ARGV[0] は最初の位置引数です。 ARGF#argv を通じて ARGV にアクセスすることもできますが、それはここでの使用例ではありません。

単一の引数をメソッドに渡したい場合は、その引数に定数以外の名前を付けるだけです。例えば:

def greet(name)
  puts "Hello, #{name}!"
end

可変数の引数を名前付き配列としてメソッドに渡したい場合は、それも可能です。例えば:

def greet(*names)
  names.each { |name| puts "Hello, #{name}!" }
end

%w[Alice Bob Carol].map { |name| greet(name) }

この場合、メソッドローカルの配列名のリストを収集し、その配列内の項目を反復処理します。これには、空の配列、nil 値、位置引数として Array オブジェクトを渡すなど、元の質問の範囲外であるエッジ ケースがいくつかありますが、これらのエッジ ケースも元の質問の範囲外です。

コマンドラインで引数を渡す場合は、ARGV を使用します。それ以外の場合は、メソッド定義で位置引数または収集された配列引数を使用します。