在当前版本的 Ruby 中,您可以使用关键字参数:
def initialize(a: nil, b: nil, c: nil)
@a, @b, @c = a, b, c
end
请注意,目前,关键字参数始终具有默认值,因此始终是可选的。如果你想强制关键字参数,你可以使用默认值可以是任何Ruby 表达式的简单技巧:
def mand(name) raise ArgumentError, "#{name} is mandatory!" end
def initialize(a: mand 'a', b: mand 'b', c: mand 'c')
@a, @b, @c = a, b, c
end
在 Ruby 的下一个版本中,可以通过省略默认值来强制使用关键字参数:
def initialize(a:, b:, c:)
@a, @b, @c = a, b, c
end
看这里:
class Test
def initialize(a:, b:, c:)
@a, @b, @c = a, b, c
end
def to_s
instance_variables.map {|v| "#{v} = #{instance_variable_get(v)}" }.join("\n")
end
end
puts Test.new(a: 1, b: 2, c: 3)
# @a = 1
# @b = 2
# @c = 3