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'
关于ruby - 我可以在 Ruby 2.x 中要求命名参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250447/