Sulla mailing list Macscrpt hanno fatto una innocente domanda su come cucire insieme due liste in AppleScript.
Gli hanno risposto in tutti i modi possibili. È solo codice, ma vederlo così è quasi arte.
Intendiamoci: Lisp è più elegante. AppleScript può però fare cose belle, anche se in modalità de noantri.
Il problema era: partendo dalle liste {1, 2, 3}
e {“a”, “b”, “c”}
, arrivare a una lista sola, {{1, 2, 3}, {“a”, “b”, “c”}}
.
Le soluzioni:
set questaLista to {1, 2, 3}
set quellaLista to {“a”, “b”, “c”}
set coppiaListe to {}
set end of coppiaListe to questaLista
set end of coppiaListe to quellaLista
–> {{1, 2, 3}, {“a”, “b”, “c”}}
set questaLista to {1, 2, 3}
set quellaLista to {"a", "b", "c"}
set coppiaListe to {}
set coppiaListe to ((coppiaListe & {questaLista}) & {quellaLista})
--> {{1, 2, 3}, {"a", "b", "c"}}
Ma c’è chi ha scritto praticamente un manuale della gestione delle liste:
set _lista1 to {1, 2, 3}
--> {1, 2, 3}
set _lista2 to {"a", "b", "c"}
--> {"a", "b", "c"}
set _lista3 to _lista1 & _lista2 -- crea una lista da due liste
--> {1, 2, 3, "a", "b", "c"}
set _lista3 to _lista1 & {_lista2} -- aggiunge una lista a una lista
--> {1, 2, 3, {"a", "b", "c"}}
copy _lista2 to end of _lista1 -- aggiunge una lista a una lista
--> {1, 2, 3, {"a", "b", "c"}}
copy {"x", "y", "z"} to item 2 of _lista1 -- sostituisce un elemento di una lista con una lista
--> {1, {"x", "y", "z"}, 3, {"a", "b", "c"}}
set coppiaListe to {_lista1, _lista2} -- crea una lista da due liste
--> {{1, 2, 3}, {"a", "b", "c"}}
set beginning of _lista1 to _lista2 -- aggiunge una lista all'inizio di una lista
--> {{"a", "b", "c"}, 1, 2, 3}
set 1 to {{"a", "b", "c"}}
set listaNidificata2 to {{"uno", "due", "tre"}}
set listaNidificata3 to {{"do", "re", "mi"}}
set listaNidificata4 to listaNidificata1 & listaNidificata2 & listaNidificata3
--> {{"a", "b", "c"}, {"uno", "due", "tre"}, {"do", "re", "mi"}}
Se vuoi saperne di più su AppleScript, è il caso di… mettersi in lista.