Parámetros por Defecto

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