Ruby引数の柔軟性
Ruby基礎とメソッド引数
Rubyではメソッドを定義するときに、引数を指定することで呼び出し側から値を渡すことができます。基本的な構文は次のようになります。
def greet(name)
puts "こんにちは、#{name}さん!"
end
greet("太郎") # => こんにちは、太郎さん!
この例では name がメソッド引数です。引数は必須で、呼び出し時に必ず値を渡さなければなりません。
デフォルト引数と可変長引数
デフォルト引数を使うと、呼び出し側が値を渡さなくてもメソッド内部でデフォルト値が使用されます。
def greet(name = "ゲスト")
puts "こんにちは、#{name}さん!"
end
greet() # => こんにちは、ゲストさん!
greet("花子") # => こんにちは、花子さん!
可変長引数は、引数の数が可変である場合に便利です。*args を使うと、複数の引数を配列として受け取れます。
def sum(*numbers)
numbers.reduce(0, :+)
end
sum(1, 2, 3, 4) # => 10
sum(5, 10) # => 15
可変長引数はデフォルト引数と組み合わせることも可能です。
キーワード引数と名前付き引数
Ruby 2.0 以降、キーワード引数(名前付き引数)を使うことで、引数の順序に依存せずに値を渡すことができます。
def configure(host:, port: 80, use_ssl: false)
puts "ホスト: #{host}"
puts "ポート: #{port}"
puts "SSL: #{use_ssl}"
end
configure(host: "example.com", use_ssl: true)
# => ホスト: example.com
# => ポート: 80
# => SSL: true
キーワード引数は必須(デフォルト値が無い場合)と任意(デフォルト値がある場合)を区別できます。名前付き引数は可変長引数と組み合わせることもできます。
引数の順序と柔軟性
Ruby のメソッド引数は、位置引数、デフォルト引数、可変長引数、キーワード引数の順序で定義する必要があります。順序を守ることで、呼び出し側にとっても予測しやすい API を提供できます。
def example(pos1, pos2 = "default", *rest, keyword1:, keyword2: "kw_default")
# ...
end
この構造により、位置引数で必須値を受け取り、デフォルト引数でオプション値を提供し、可変長引数で追加情報を受け取り、最後にキーワード引数で名前付きオプションを受け取ることができます。柔軟性と可読性を両立させる設計が可能です。
コメント
コメントを投稿