J'ai une méthode qui devrait accepter au maximum 2 arguments. Son code est comme ceci:
def method (*args)
if args.length < 3 then
puts args.collect
else
puts "Enter correct number of arguments"
end
end
Existe-t-il une manière plus élégante de le spécifier?
Vous avez plusieurs alternatives, selon le degré auquel vous voulez que la méthode soit détaillée et stricte.
# 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
si le maximum est de deux arguments, pourquoi utiliser l'opérateur splat comme ça? Soyez explicite. (sauf s'il existe une autre contrainte dont vous ne nous avez pas parlé.)
def foo(arg1, arg2)
# ...
end
Ou...
def foo(arg1, arg2=some_default)
# ...
end
Ou même...
def foo(arg1=some_default, arg2=some_other_default)
# ...
end
Générez mieux une erreur. Si les arguments ne sont pas corrects, c'est un problème grave, qui ne devrait pas passer dans votre avec un humble puts
.
def method (*args)
raise ArgumentError.new("Enter correct number of arguments") unless args.length < 3
puts args.collect
end