|
||
|
![]() |
![]() |
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Comprobar si un array contiene un elemento concreto.
Echando un vistazo en el foro oficial de Tasker, he encontrado una forma, que hasta ahora no conocía, de comprobar si un array contiene un elemento concreto, y es así;
%array(#?%elemento) Devolverá el indice del elemento, o devolverá 0, si no se encuentra en el array. Ej: %array()=uno,dos,tres,cuatro,cinco. %elemento=tres Acción Flash: %array(#?%elemento) devolverá 3 ... Hasta ahora, yo hacía esta comprobación de la siguiente forma; IF %array() coincide *%elemento* Pero creo que sobretodo con arrays con muchos elementos, la primera opción debe ser más efectiva. Última edición por Rsc Día 30/11/17 a las 20:17:44. |
Los siguientes 2 usuarios han agradecido a Rsc su comentario: | ||
|
#2
|
||||
|
||||
![]() %matriz(#?b/c)
__________________
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
|
||||
|
||||
Que desastre, mira que he repasado veces ese tutorial, y nunca me fijé en esa intorrogación... Y yo compartiéndolo como si hubiera descubierto América... Bueno si os vale la intención era buena
![]() Se ve que en su día encontré la opción de IF %array() coincide *%elemento*, y pensé que era la única. Voy a eliminar por lo menos, la sugerencia de incluirlo en el tutorial. Última edición por Rsc Día 30/11/17 a las 20:18:56. |
Gracias de parte de: | ||
#4
|
||||
|
||||
__________________
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) |
#5
|
||||
|
||||
- "Es un truco buenísimo esto que ha descubierto RSC, no me voy a limitar a pulsar el botón de "Gracias", voy a escribir un breve mensaje para agradecer de forma explícita". Resumiendo, que yo tampoco me lo sabía a pesar de haber leído el tutorial en su momento. Lo mío es peor porque creo recordar que fui yo quien lo tradujo del inglés, pero ni con esas. Supongo que si en aquel momento no lo necesitaba o no me pareció importante, y no lo fijé adecuadamente en la memoria. ![]() %matriz(#?b/c)
Una lista separada por comas de los índices de matriz (de menor a mayor) con valores coincidentes con los indicados, o 0 si no coincide ninguno (2,3 en el ejemplo). ![]() ![]() Sinceramente, creo que sería buena idea que en esa página del tutorial RSC añadiese un abajo un comentario-respuesta explicándolo bien, tal como ha hecho aquí. Luego yo pongo en ese párrafo del tutorial una nota-enlace a la explicación/comentario.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#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) |
#7
|
||||
|
||||
Bueno y a lo que iba... Como vengo haciendo últimamente, cuando hay más de una forma de hacer lo mismo, he calculado el tiempo que tarda en ejecutarse de ambas formas, y me he llevado una sorpresa... TAREA 1 A1: Establecer variable [ Nombre:%timetarea A:%TIMEMS Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A2: Si (if) [ %Habilitados() ~ *rebeca* ] A3: Esperar [ MS:1 Segundos:0 Minutos:0 Horas:0 Días:0 ] A4: Fin si (End if) A5: Establecer variable [ Nombre:%timetareaduracion A:%TIMEMS - %timetarea Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] A6: Flash [ Texto:%timetareaduracion Largo:Apagado ] (Tarda entre 9 y 15 ms) TAREA 2 A1: Establecer variable [ Nombre:%timetarea A:%TIMEMS Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A: Si (if) [ %Habilitados(#?rebeca) != 0 ] A3: Esperar [ MS:1 Segundos:0 Minutos:0 Horas:0 Días:0 ] A4: Fin si (End if) A5: Establecer variable [ Nombre:%timetareaduracion A:%TIMEMS - %timetarea Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] A6: Flash [ Texto:%timetareaduracion Largo:Apagado ] (Tarda entre 40 y 60 ms) Daba por hecho que la segunda opción, nueva para mi, iba a ser mas eficaz, pero acabo de comprobar que no... Última edición por Rsc Día 04/12/17 a las 15:17:57. |
Los siguientes 2 usuarios han agradecido a Rsc su comentario: | ||
#8
|
||||
|
||||
No sé como irá en rendimiento pero yo alguna vez he usado el indexOf en JS para seleccionar un índice concreto manejando escenas, ya que es la forma de seleccionar en algunos elementos que usan arrays. Última edición por danko9696 Día 04/12/17 a las 15:46:12. |
Gracias de parte de: | ||
#9
|
||||
|
||||
Tienes razón, aunque con ambas puedes comprobar si un array contiene un elemento concreto, no hacen exactamente lo mismo.
Pero me imaginaba, que al tener que recorrer todo el array para comprobar si el *%elemento* coincide,tardaría más en ejecutarse... Con esto te refieres a que sitúas/enfocas el indice que deseas de un array, en un elemento menú? |
#10
|
||||
|
||||
Nope, en un spinner. |
Gracias de parte de: | ||
![]() |
![]() |
||||||
|