默认参数值和命名参数¶
默认参数值¶
方法可以为最后几个参数指定默认值
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
当方法指定散点参数(下一节解释)时,不能对位置参数使用命名参数。原因是理解参数匹配的方式变得非常困难;在这种情况下,位置参数更容易推理。