2011-02-11 20 views

Respuesta

67

Tiene varias alternativas, dependiendo de cuánto desee que el método sea detallado y estricto.

# 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 
+24

+1 pero olvidó 'def (uno, dos, * ignorado); fin –

12

si el máximo son dos argumentos, ¿por qué usar el operador splat de esa manera? Solo se explícito. (A menos que exista alguna otra restricción que usted no nos ha dado a conocer.)

def foo(arg1, arg2) 
    # ... 
end 

O ...

def foo(arg1, arg2=some_default) 
    # ... 
end 

O incluso ...

def foo(arg1=some_default, arg2=some_other_default) 
    # ... 
end 
5

generará un error mejor. Si los argumentos no son correctos, este es un problema serio, que no debería pasar con un humilde puts.

def method (*args) 
    raise ArgumentError.new("Enter correct number of arguments") unless args.length < 3 
    puts args.collect 
end 
Cuestiones relacionadas