Mi código actual:
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
donde customLat()
es una subrutina que solicita al usuario una latitud, intenta forzarla a un número y genera un error si no puede, y genera otro error si dicho número no está entre -90 y 90, y customLon()
es similar, pero en su lugar se comprueba entre -180 y 180. En cualquier caso, si se devuelve un error, solicita al usuario el número relevante una vez más. customCity()
simplemente le pide al usuario el nombre de la ciudad.
Mi problema es qué escribir después de la línea copy city
. ¿Hay alguna manera de agregar un bloque if
en mi código, es decir, tener el código escrito encima de sí mismo, basado en el resultado del bloque "nueva ciudad" if
? Es decir, una vez que el código haya establecido las variables city
, lat
y lon
, insertará antes de la línea end if
un bloque similar a las ciudades anteriores:
else if (city as string) is "Newly Inputted City" then
set lat to 1
set lon to 1
Estoy buscando una forma en que el usuario pueda ingresar una ciudad y coordenadas personalizadas, y el código se sobrescribirá para permitir que sea una opción válida, para que la próxima vez que se ejecute el script la ciudad personalizada estará disponible como una opción, y al seleccionarla se establecerá automáticamente su lat
y lon
, al igual que las otras ciudades.