Copy parameters
Copy parameters {( inicioDesde )} -> Resultado
Parámetro | Tipo | Descripción | |
---|---|---|---|
inicioDesde | Integer | → | Índice de inicio(incluido) |
Resultado | Collection | ← | Nueva colección que contiene los parámetros pasados realmente |
Descripción
El comando Copy parameters devuelve una nueva colección que contiene todos los parámetros realmente pasados a un método o una función. Este comando es útil cuando se necesita reenviar un número variado de parámetros de un método o función a otro método o función.
En el parámetro opcional inicioDesde, puede pasar el índice del parámetro desde el que se va a empezar a recoger los parámetros a reenviar. El propio parámetro inicioDesde está incluido.
Cuando se llama dentro de una fórmula, Copy parameters devuelve los parámetros pasados explícitamente utilizando apply() o call() (y no los pasados al método padre o función).
Copy parameters devuelve una colección vacía si:
- no se llama en un método o función que haya sido llamado por otro método o función,
- no se ha pasado ningún parámetro al método padre o función.
Ejemplo 1
Llamando a una función diferente dependiendo del primer parámetro y pasando otros parámetros a esta función:
Function selectTask($task Text)
Case of
:($task="Task1")
This.task1(Copy parameters(2))
:($task="Task2")
This.task2(Copy parameters(2))
End case
O, llamando a otra función en otro objeto con apply() y pasar los parámetros:
Function doSomething($param Text;$extraParameters Variant)
This.delegate.doSomething.apply(This.delegate;Copy parameters)
Ejemplo 2
Como el comando devuelve una colección, se puede utilizar con .join() para crear, por ejemplo, una lista html:
// Clase
Function list($typeText)->Text
//tipo de lista es "u" u "o"
var $value : Collection
$value:=Copy parameters(2)
$html:="<"+$type+"l>
* "
$html+=$value.join("
* ")
$html+="
"
return$html
// Método
$htmlList:=$c.list("u";"Alpha";"Bravo";"Charlie")
// $htmlList =
* Alpha
* Bravo
* Charlie