When you define a method, you can specify default values for some or all of the parameters. If you do this, then your method may be invoked with fewer argument values than the declared number of parameters. If arguments are omitted, then the default value of the parameter is used in its place. Specify a default value by following the parameter name with an equals sign and a value:
def prefix(s, len=1) s[0,len] end
prefix("Ruby", 3) # => "Rub" prefix("Ruby") # => "R"
Los valores por defecto pueden ser expresiones arbitrarias en las que aparezcan parámetros previos:
# Return the last character of s or the substring from index to the end def suffix(s, index=s.size-1) s[index, s.size-index] end
Los parámetros por defecto son evaluados cuando se invoca al método, no cuando es compilado.
En este ejemplo el valor por defecto a = []
produce un nuevo array en cada invocación
en vez de reutilizar un único array que fuera creado cuando se define el método:
# Append the value x to the array a, return a. # If no array is specified, start with an empty one. def append(x, a=[]) a << x end
Casiano Rodriguez León 2015-01-07