velocity - programacion - matrices en r studio
¿Cuál es la mejor manera de acceder a una matriz dentro de Velocity? (7)
Terminé usando ListTool de velocity-tools.jar. Tiene métodos para acceder a los elementos de una matriz y también obtener su tamaño.
Tengo una matriz de Java como:
String[] arr = new String[] {"123","doc","projectReport.doc"};
En mi opinión, la forma natural de acceder sería:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
Pero eso no está funcionando. He venido con esta solución. Pero es demasiado código para una tarea tan fácil.
#set($counter = 0)
#foreach($el in $arr)
#if($counter==0)
#set($att_id = $el)
#elseif($counter==1)
#set($att_type = $el)
#elseif($counter==2)
#set($att_name = $el)
#end
#set($counter = $counter + 1)
#end
¿Hay alguna otra manera?
hay un counter $ velocityCount implícito que comienza con el valor 1 por lo que no tiene que crear su propio contador.
String[] arr = new String[] {"123", "doc", "projectReport.doc"};
En mi opinión, la forma natural de acceder sería:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
El valor para esto se puede obtener usando $array.get("arr", 1)
porque no hay una forma directa de obtener el valor de una matriz como $att_id = $arr[0]
en velocidad.
Espero que funcione :)
Puede usar el uso de Velocity 1.6: para una matriz llamada $array
, simplemente puede hacer $array.get($index)
.
En la próxima Velocity 1.7, uno podrá hacer $array[$index]
(así como $list[$index]
y $map[$key]
).
Tengo la misma pregunta y me respondieron en otro hilo
#set ( $Page = $additionalParams.get(''Page'') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
La respuesta de Brian es correcta, aunque le gustaría saber que próximamente Velocity 1.6 tiene soporte directo para matrices; ver la documentación de Velocity para más información.
Puede envolver la matriz en una List
usando Arrays.asList(T... a)
. El nuevo objeto List está respaldado por la matriz original, por lo que no asigna una cantidad innecesaria de copias. Incluso los cambios realizados en la nueva lista se propagarán nuevamente a la matriz.
Luego puede usar $list.get(int index)
para sacar sus objetos en Velocity.
Si necesita obtener solo uno o dos objetos de una matriz, también puede usar Array.get(Object array, int index)
para obtener un elemento de una matriz.