我有一个方法,应该接受最多2个参数。它的代码是这样的:
def method (*args)
if args.length < 3 then
puts args.collect
else
puts "Enter correct number of arguments"
end
end
是否有更优雅的方式来指定它?
答案 0 :(得分:72)
您有多种选择,具体取决于您希望该方法的详细程度和严格程度。
# force max 2 args
def foo(*args)
raise ArgumentError, "Too many arguments" if args.length > 2
end
# silently ignore other args
def foo(*args)
one, two = *args
# use local vars one and two
end
# let the interpreter do its job
def foo(one, two)
end
# let the interpreter do its job
# with defaults
def foo(one, two = "default")
end
答案 1 :(得分:12)
如果最大值是两个参数,为什么要使用这样的splat运算符呢?只是明确。 (除非你还没有告诉我们其他的约束。)
def foo(arg1, arg2)
# ...
end
或者...
def foo(arg1, arg2=some_default)
# ...
end
甚至......
def foo(arg1=some_default, arg2=some_other_default)
# ...
end
答案 2 :(得分:5)
更好地提出错误。如果论证不正确,这是一个严重的问题,不应该通过一个卑微的puts
传递给你。
def method (*args)
raise ArgumentError.new("Enter correct number of arguments") unless args.length < 3
puts args.collect
end