Como he visto muchas preguntas con consejos para jugar golf en su idioma interesado, decidí preguntar mi idioma favorito: Groovy. Las personas pueden dar algunos consejos y trucos que se utilizarán en el golf con Groovy.
@Alison: Me siento mal, ya que no hay propina de golf para Groovy en este sitio :(
Ant's
2
¿Tienes algún consejo para comenzar?
Armand
Respuestas:
5
Soy nuevo en todo esto del golf, esto es lo que obtuve hasta ahora:
Usar cierres no funciones:
def a (b) {imprimir b}
es más largo que
a = {imprimirlo}
Puede usar un índice negativo en matrices y listas como un alias para size () -
c = "abc"
d = ["a", "b", "c"]
afirmar c [c.size () - 1] == c [-1]
afirmar c [c.size () - 2] == c [-2]
afirmar d [d.size () - 1] == d [-1]
afirmar d.last () == d [-1]
El operador de propagación es un atajo para recolectar:
afirmar d * .size () == d.collect {it.size ()}
Para ordenar, utilice el operador de nave espacial:
Bueno, en Grails Framework debemos obtener muchos valores de una selección con múltiples atributos . Puede usar bucles, aplanar y otras estructuras de programación más típicas, pero puede guardar algunas líneas. Si tiene una selección como:
<select id="users" multiple="true" name="users">
<option value="193">User A</option>
<option value="378">User B</option>
<option value="377">User C</option>
</select><%-- No Grails tags for now --%>
Luego, en su controlador puede simplemente escribir:
Respuestas:
Soy nuevo en todo esto del golf, esto es lo que obtuve hasta ahora:
Usar cierres no funciones:
es más largo que
Puede usar un índice negativo en matrices y listas como un alias para size () -
El operador de propagación es un atajo para recolectar:
Para ordenar, utilice el operador de nave espacial:
Editar conversiones:
fuente
*.X
operador de propagación a menudo se puede escribir como.X
Como Groovy es un lenguaje algo detallado, puede usar Groovys MOP para acortar las llamadas a métodos.
El siguiente fragmento, por ejemplo, pagaría después del cuarto uso:
Consejo de golf editar:
O ya sabes:
fuente
grep
es corto y funciona en varios problemasobtener los caracteres de una cadena como una lista con espacios y sin elementos
'ABC XYZ'.grep()
iniciales : devuelve[A, B, C, , X, Y, Z]
grep con regexp es más corto que convertir a mayúsculas, si es necesario: en
it.grep(~/(?i)$c/)
lugar deit.toUpperCase().grep(c)
fuente
'ABC XYZ'as Set
es un personaje más corto y trabaja en la mayoría de los mismos lugaresObtener una matriz de una lista de objetos
Si tiene una lista de objetos como:
Puede generar una ArrayList con una determinada propiedad utilizando:
BONIFICACIÓN: Groovy ... on Rails!
Bueno, en Grails Framework debemos obtener muchos valores de una selección con múltiples atributos . Puede usar bucles, aplanar y otras estructuras de programación más típicas, pero puede guardar algunas líneas. Si tiene una selección como:
Luego, en su controlador puede simplemente escribir:
fuente