Default parameter/es

From Lazarus wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

Un parámetro predeterminado, también conocido como argumento opcional (o argumento predeterminado) es un parámetro de una función o procedimiento que tiene un valor predeterminado proporcionado. Si se llama a la función o procedimiento sin proporcionar un valor para este parámetro, se usará el valor por defecto (default). Si, en cambio, se proporciona un valor para dicho parámetro, se utilizará ese valor, ignorando el valor predeterminado. Se utiliza frecuentemente para extender una función o procedimiento existente agregando algunos parámetros que tienen valor por defecto en lugar de escribir un método idéntico con parámetros diferentes.

Los parámetros con valor predeterminado deben ubicarse lo más a la derecha posible dentro del conjunto de parámetros, es decir, luego de declarar un parámetro con valor predeterminado, no se puede declarar otro parámetro sin valor predeterminado. También hay que tener en cuenta que para llamar a una función o procedimiento ignorando los parámetros con valor predeterminado, debe hacerse de izquierda a derecha, de modo que si se invoca a una función que tiene sus últimos 3 parámetros con valores predeterminados ignorando el primero de estos 3 parámetros, también deben ignorarse los restantes.

Ejemplo SumarEnteros

function SumarEnteros ( a, b : integer; c : integer = 0; d : integer = 7 ) : integer;
begin
  Result := a + b + c + d;
end;

Formas correctas de uso de la función SumarEnteros y sus retultados:

SumarEnteros ( 0, 1)        // 0 + 1 + 0 +  7 =  8
SumarEnteros ( 0, 1, 3)     // 0 + 1 + 3 +  7 = 11
SumarEnteros ( 0, 1, 3, 10) // 0 + 1 + 3 + 10 = 14

Formas incorrectas de uso de la función SumarEnteros que ocacionarán un error:

SumarEnteros ( 0, 1, , 9) // si se ingora el primer parámetro con valor predeterminado, deben también ignorarse los restantes (izquierda a derecha)

Forma incorrecta de declarar una función con parámetros predeterminados:

Function SumarEnteros ( a, b : integer; c: integer = 0; d : integer = 7; e : integer) : integer;
// a la derecha de un parámetro con valor predeterminado, solo debe declararse otro parámetro con valor predeterminado.