|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Intercalar valores de 2 variables o arrays
Hola: nunca entendí bien la diferencia y estuve leyendo de todo (recopilatorio, pagina de tasker en ingles y español y haciendo pruebas con cualquier cosa, pero no puedo hacer algo tan simple como entrelazar los datos de dos array, ej tengo una variable %frutas que contiene: banana,manzana y la variable %numero que contiene:1,2 lo que quiero es entrecruzar los datos, que el resultado sea banana 1,manzana 2.
Probé separando las variables y luego no se como unir uno a uno los datos, con autotools también con la opción de array pero no lo logro. Cualquier método me viene bien, estoy atascado en algo que se que es simple pero no logro dilucidar. Si alguien me puede explicar con un ejemplo práctico (como a los niños), tal vez entienda en que le estoy errando. Gracias. |
|
|
|
#2
|
||||
|
||||
|
Lo primero sería generar el correspondiente array a partir de esas variables con valores separado por comas...
Código:
Separar variable [ Nombre:%frutas Separador: , ] Separar variable [ Nombre:%numeros Separador: , ] Código:
For [ Variable:%fruta Ítems:%frutas() ] Flash [ Texto:%fruta ] End For Código:
For [ Variable:%num Ítems: 1:%frutas(#) ] Flash [ Texto:%frutas(%num) ] End For Código:
For [ Variable:%num Ítems: 1:%frutas(#) ] Flash [ Texto:%frutas(%num) / %numero(%num) ] End For Visto esto no sería muy complicado generar un tercer array con el resultado que estás buscando... Código:
For [ Variable:%num Ítems: 1:%frutas(#) ] Establecer variable [ Nombre:%resultado(%num) A:%frutas(%num) y %numero(%num) ] Flash [ Texto:%resultado(%num) ] End For
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#3
|
||||
|
||||
|
Willy: juro que detesto estar preguntando esto nuevamente, pero necesito ayuda porque sigo sin entender demasiado.
Esta sería la tarea que funciona para nuestro ejemplo. Código:
Prueba (149) A1: Establecer variable [ Nombre:%frutas A:banana,manzana Calcular:Apagado Añadir:Apagado ] A2: Establecer variable [ Nombre:%numero A:1,2 Calcular:Apagado Añadir:Apagado ] A3: Separar variable [ Nombre:%frutas Separador:, Eliminar base:Apagado ] A4: Separar variable [ Nombre:%numero Separador:, Eliminar base:Apagado ] A5: For [ Variable:%num Ítems:%numero() ] A6: Establecer variable [ Nombre:%resultado(%num) A:%frutas(%num),%numero(%num) Calcular:Apagado Añadir:Apagado ] A7: Flash [ Texto:%resultado(%num) Largo:Apagado ] A8: End For Perfecto, crea la variable %resultado que contiene banana,1,manzana,2 Pero al querer aplicarlo a mi tarea real no me funciona. Exporto parte de la tarea para que veas por donde viene. La tarea original está ejecuta con Autospotify, el cual no tengo y pensé modificarla con autoweb, pero me trabo en este paso. Tengo variables en mayúscula para ver los resultados. Código:
Prueba2 (150) A1: Si (if) [ %CLIP ~R https://open.spotify.com/track/ ] A2: AutoTools Dialog [ Configuración:Dialog Type: 2 Choices Choice One: No Choice One Command: false Choice Two: Yes Choice Two Command: true Text: Crear una playlist con canciones similares? Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A3: Si (if) [ %atcommand ~ true ] A4: Establecer variable [ Nombre:%url A:%CLIP Calcular:Apagado Añadir:Apagado ] A5: Separar variable [ Nombre:%url Separador:https://open.spotify.com/track/ Eliminar base:Apagado ] A6: AutoWeb Web Service [ Configuración:API: Spotify API Action: Get a track Id: %url2 Cuenta atrás (segundos):120 ] A7: AutoWeb Web Service [ Configuración:API: Last.fm API Action: Get similiar songs Track: %trackname Artist: %trackartistnames1 Limit: 3 Cuenta atrás (segundos):120 ] A8: Establecer variable [ Nombre:%Nombre A:%artist_name() Calcular:Apagado Añadir:Apagado ] A9: Establecer variable [ Nombre:%Pista A:%track_name() Calcular:Apagado Añadir:Apagado ] A10: Separar variable [ Nombre:%Nombre Separador:, Eliminar base:Apagado ] A11: Separar variable [ Nombre:%Pista Separador:, Eliminar base:Apagado ] A12: For [ Variable:%num Ítems:%Nombre() ] A13: Establecer variable [ Nombre:%Resultado(%num) A:%Pista(%num),%Nombre(%num) Calcular:Apagado Añadir:Apagado ] A14: Flash [ Texto:%Resultado(%num) Largo:Apagado ] A15: End For A16: Fin si (End if) A17: Fin si (End if) En la acción A7 me devuelve dos arrays %artist_name() y %track_name() con 3 items cada uno. los convierto en variable %Nombre y %Pista y los separo creando %Nombre1 %Nombre2 y %Nombre3 y %Pista1, %Pista2 y %Pista3 con su contenido perfectamente. Cuando ejecuto en A12 el For es donde no logro ver el error Si pongo A12: For [ Variable:%num Ítems:%Nombre() ] Me crea %Resultado0 con el contenido %Pista0,%Nombre0 Si pongo A12: For [ Variable:%num Ítems:%Nombre(#) ] Me crea solamente %Resultado3 con el contenido correcto Espero no ponerme pesado, pero no veo el error |
|
#4
|
||||
|
||||
|
Esta acción...
For [ Variable: %num Ítems: %numero() ] ...significa. Para cada elemento del array %numero() mete en %num el valor de ese elemento. En ese ejemplo el array %numero contiene números por lo que %num también contendrá un número. En la siguiente acción de tu ejemplo usas %num como un índice para referenciar los elementos de otros arrays, y funciona porque casualmente %num contiene un número. En A12 del segundo bloque usas un bucle similar al del ejemplo, pero esta vez el array que recorres (%Nombre) no contiene números por lo que %num no contendrá números. Luego usas ese %num como un índice para referenciar los elementos de otros arrays, y eso es lo que no funciona porque %num no es un número de índice, es un texto, y eso no se puede usar como índice. En A12 deberías poner algo así... For [ Variable:%num Ítems: 1:%Nombre(#) ] ...para que haga lo que pretendes. En cada vuelta del bucle la variable %num tomará un valor entre 1 y el número de elementos del array %Nombre. Luego podrás usar ese %num como índice para el resto de arrays. Resumiendo... For [ Variable:%num Ítems:%Nombre() ] pone en %num el valor de cada elemento de %Nombre For [ Variable:%num Ítems:%Nombre(#) ] pone en %num el número de elementos de %Nombre For [ Variable:%num Ítems: 1:%Nombre(#) ] pone en %num un número de 1 al número de elementos de %Nombre ¿Ves la diferencia entre cada una de esas sentencias?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
|
#5
|
||||
|
||||
|
Todavía necesito el pescado cocido... Bien con estas "pistas", o sea todo hecho, seguiré el perfil, entendiendo un poco más. |
|
#6
|
||||
|
||||
|
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
![]() |
Estás aquí
|
||||||
|
||||||