Los parametros opcionales proveen información sobre qué cambió: on replace oldValue [ firstIndex .. lastIndex ] = newElements { ... }
Todos estos parámetros son opcionales, y en la más simple de las formas, ninguno está presente:
var x = 0 on replace { println("x is ahora: {x}") }
El parámetro "oldValue" provee el valor previo de la variable.
var x = 0 on replace oldValue {
println("x was {oldValue} and is now: {x}") }
Los parámetros remanentes son utiles con las secuencias.
var seq = ['A', 'B', 'C', 'D', 'E', 'F']
on replace oldValue[firstIdx .. lastIdx] =
newElements { println(
"reemplazo {oldValue}[{firstIdx}..{lastIdx}]"
" por {newElements} produciendo {seq}")
}
seq[3] = '$';
insert '#' into seq;
delete '$' from seq;
delete seq[2];
seq[1..4] = ['X', 'Y'];
delete seq;
Lo que produce está salida:
replaced [0..-1] by ABCDEF yielding ABCDEF
replaced ABCDEF[3..3] by $ yielding ABC$EF
replaced ABC$EF[6..5] by # yielding ABC$EF#
replaced ABC$EF#[3..3] by yielding ABCEF#
replaced ABCEF#[2..2] by yielding ABEF#
replaced ABEF#[1..4] by XY yielding AXY
replaced AXY[0..2] by yielding
Nota que firstIndex, lastIndex and newElements se refieren únicamente a la porción que la secuencia que cambió.
1 comentario:
Excelente tutorial y muy util, el mejor que he encontrado en español en el poco tiempo de vida que lleva este lenguaje
Publicar un comentario