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 pide al usuario una latitud, intenta forzarla a un número y da un error si no puede, y da otro error si dicho número no está entre -90 y 90, y customLon()
es uno similar, pero en vez de eso comprueba entre -180 y 180. En cualquiera de los casos, si se produce un error, se solicita al usuario el número correspondiente una vez más. customCity()
se limita a pedir al usuario el nombre de la ciudad.
Mi problema es qué escribir después del copy city
línea. ¿Hay alguna forma de añadir un if
en mi código - es decir, que el código se escriba sobre sí mismo - basado en el resultado de la "Nueva Ciudad" if
bloque? Es decir, una vez que el código ha establecido las variables city
, lat
y lon
se insertará antes del end if
línea un bloque similar al de las ciudades anteriores:
else if (city as string) is "Newly Inputted City" then
set lat to 1
set lon to 1
Estoy buscando una manera de que el usuario pueda introducir una ciudad y coordenadas personalizadas, y el código se sobrescribe a sí mismo para permitirlo como opción válida, de modo que la próxima vez que se ejecute el script la ciudad personalizada estará disponible como opción, y al seleccionarla se establecerá automáticamente su lat
y lon
Al igual que las demás ciudades.