Il mio codice attuale:
property cityList : {"City A","City B","City C","New City"}
choose from list cityList with prompt "Choose your city:"
set choice to result
if choice is not false then set city to choice
if choice is false then error number -128
if (city as string) is "City A" then
set lat to 1
set lon to 1
else if (city as string) is "City B" then
set lat to 1
set lon to 1
else if (city as string) is "City C" then
set lat to 1
set lon to 1
else if (city as string) is "New City" then
set lat to my customLat()
set lon to my customLon()
set city to my customCity()
set x to the length of cityList
set the end of cityList to "New City"
copy city as string to item x of cityList
end if
--script that does things based on values of lat and lon
dove customLat()
è una subroutine che richiede all'utente una latitudine, prova a costringerlo a un numero e genera un errore se non può, e genera un altro errore se detto numero non è compreso tra -90 e 90, e customLon()
è simile, ma invece verifica tra -180 e 180. In entrambi i casi, se viene restituito un errore, richiede ancora una volta all'utente il numero corrispondente. customCity()
richiede semplicemente all'utente il nome della città.
Il mio problema è cosa digitare dopo la riga copy city
. C'è un modo per aggiungere un blocco if
nel mio codice - cioè, avere il codice scritto su se stesso - basato sul risultato del blocco if
"Nuova città"? Cioè, una volta che il codice ha stabilito le variabili city
, lat
e lon
, verrà inserito prima che la riga end if
un blocco simile alle città precedenti:
else if (city as string) is "Newly Inputted City" then
set lat to 1
set lon to 1
Sto cercando un modo in cui l'utente può inserire una città e le coordinate personalizzate, e il codice sovrascrive se stesso per consentire che sia un'opzione valida, in modo che la prossima volta che lo script venga eseguito la città personalizzata sarà disponibile come opzione e la sua selezione imposterà automaticamente lat
e lon
, proprio come le altre città.