Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 18/07/16, 19:46:50
Array

[xs_avatar]
leromaro leromaro no está en línea
Miembro del foro
 
Fecha de registro: ago 2014
Localización: Chascomús, Argentina
Mensajes: 245
Modelo de smartphone: Xiaomi Mi A3
Tu operador: Claro
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.
Responder Con Cita


  #2  
Viejo 18/07/16, 20:52:13
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
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: , ]
Luego puedes recorrer cada array con un bucle como este...

Código:
For [ Variable:%fruta Ítems:%frutas() ] 
	Flash [ Texto:%fruta ] 
End For
O como este otro...

Código:
For [ Variable:%num Ítems: 1:%frutas(#) ] 
	Flash [ Texto:%frutas(%num) ] 
End For
Con ese mismo procedimiento podrías recorrer varios arrays al mismo tiempo...

Código:
For [ Variable:%num Ítems: 1:%frutas(#) ] 
	Flash [ Texto:%frutas(%num) / %numero(%num) ] 
End For
...suponiendo que ambos tengan el mismo número de elementos. En otro caso tendrías que añadir acciones para controlarlo.

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
¿Te vale con esas pistas?
__________________
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)
Responder Con Cita
  #3  
Viejo 19/07/16, 00:45:30
Array

[xs_avatar]
leromaro leromaro no está en línea
Miembro del foro
 
Fecha de registro: ago 2014
Localización: Chascomús, Argentina
Mensajes: 245
Modelo de smartphone: Xiaomi Mi A3
Tu operador: Claro
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
Responder Con Cita
  #4  
Viejo 19/07/16, 08:20:07
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
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)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #5  
Viejo 19/07/16, 14:58:03
Array

[xs_avatar]
leromaro leromaro no está en línea
Miembro del foro
 
Fecha de registro: ago 2014
Localización: Chascomús, Argentina
Mensajes: 245
Modelo de smartphone: Xiaomi Mi A3
Tu operador: Claro
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
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)
ahhhhh ahopra sí.
Todavía necesito el pescado cocido...
Bien con estas "pistas", o sea todo hecho, seguiré el perfil, entendiendo un poco más.
Responder Con Cita
  #6  
Viejo 19/07/16, 15:19:38
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por leromaro Ver Mensaje
ahhhhh ahopra sí.
Estupendo
__________________
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)
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 18:12:06 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /