コンテンツへスキップ

デフォルトパラメータ値と名前付き引数

デフォルトパラメータ値

メソッドは、最後のパラメータに対してデフォルト値を指定できます。

class Person
  def become_older(by = 1)
    @age += by
  end
end

john = Person.new "John"
john.age # => 0

john.become_older
john.age # => 1

john.become_older 2
john.age # => 3

名前付き引数

すべての引数は、位置に加えて、名前で指定することもできます。 例えば

john.become_older by: 5

多くの引数がある場合、必要なすべてのパラメータがカバーされていれば、呼び出しの名前の順序は関係ありません。

def some_method(x, y = 1, z = 2, w = 3)
  # do something...
end

some_method 10                   # x: 10, y: 1, z: 2, w: 3
some_method 10, z: 10            # x: 10, y: 1, z: 10, w: 3
some_method 10, w: 1, y: 2, z: 3 # x: 10, y: 2, z: 3, w: 1
some_method y: 10, x: 20         # x: 20, y: 10, z: 2, w: 3

some_method y: 10 # Error, missing argument: x

メソッドがスプラットパラメータ(次のセクションで説明)を指定する場合、名前付き引数を位置パラメータに使用することはできません。 その理由は、引数がどのようにマッチングされるかを理解するのが非常に難しくなるからです。この場合、位置引数の方が推論しやすいです。