Ruby 2.0正在添加命名参数,如下所示:
def say(greeting: 'hi')
puts greeting
end
say # => puts 'hi'
say(greeting: 'howdy') # => puts 'howdy'
如何在不提供默认值的情况下使用命名参数,以便它们是必需的?
Ruby 2.0正在添加命名参数,如下所示:
def say(greeting: 'hi')
puts greeting
end
say # => puts 'hi'
say(greeting: 'howdy') # => puts 'howdy'
如何在不提供默认值的情况下使用命名参数,以便它们是必需的?
Ruby 2.0.0中没有具体的方法,但是你可以使用can do it Ruby 2.1.0,语法像def foo(a:, b:) ...
在Ruby 2.0中.x、 可以通过放置引发异常的任何表达式来强制执行,例如:
def say(greeting: raise "greeting is required")
# ...
end
如果你计划经常这样做(并且不能使用Ruby 2.1+),你可以使用一个助手方法,比如:
def required
method = caller_locations(1,1)[0].label
raise ArgumentError,
"A required keyword argument was not specified when calling '#{method}'"
end
def say(greeting: required)
# ...
end
say # => A required keyword argument was not specified when calling 'say'