我有一個方法,它應該接受最多2個參數。它的代碼是這樣的:具有最大參數數量的Ruby方法
def method (*args)
if args.length < 3 then
puts args.collect
else
puts "Enter correct number of arguments"
end
end
有更好的方法來指定它嗎?
我有一個方法,它應該接受最多2個參數。它的代碼是這樣的:具有最大參數數量的Ruby方法
def method (*args)
if args.length < 3 then
puts args.collect
else
puts "Enter correct number of arguments"
end
end
有更好的方法來指定它嗎?
根據您希望該方法冗長而嚴格的方法,您有多種選擇。
# 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
如果最大值是兩個參數,爲什麼使用這樣的splat運算符呢?只要明確。 (除非你有沒有告訴我們其他的一些約束。)
def foo(arg1, arg2)
# ...
end
或者......
def foo(arg1, arg2=some_default)
# ...
end
甚至......
def foo(arg1=some_default, arg2=some_other_default)
# ...
end
引發錯誤更好。如果論點不正確,這是嚴重的問題,不應該通過你的謙卑puts
。
def method (*args)
raise ArgumentError.new("Enter correct number of arguments") unless args.length < 3
puts args.collect
end
+1但你忘了`def(one,two,* ignored); end` – 2011-02-11 13:25:04