Como já vi muitas perguntas com dicas de golfe no idioma de seu interesse, decidi pedir meu idioma favorito: Groovy. As pessoas podem dar algumas dicas e truques que serão usados no golfe com o Groovy.
@Alison: Eu me sinto mal, pois não há uma dica de golfe para o Groovy neste site :(
Ant's
2
Você tem alguma dica para começar?
Armand #
Respostas:
5
Eu sou novo nessa coisa toda de golfe, é isso que eu tenho até agora:
Usar fechamentos não funciona:
def a (b) {print b}
é maior que
a = {imprima}
Você pode usar um índice negativo em matrizes e listas como um 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]
O operador de propagação é um atalho para coletar:
afirmar d * .size () == d.collect {it.size ()}
Para classificar, use o operador de nave espacial:
Bem, no Grails Framework , precisamos obter muitos valores de um select com vários atributos . Você pode usar loops, nivelar e outras estruturas mais comuns de programação, mas pode salvar algumas linhas. Se você tem um select 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 --%>
Então, no seu controlador, você pode escrever simplesmente:
Respostas:
Eu sou novo nessa coisa toda de golfe, é isso que eu tenho até agora:
Usar fechamentos não funciona:
é maior que
Você pode usar um índice negativo em matrizes e listas como um alias para size () -
O operador de propagação é um atalho para coletar:
Para classificar, use o operador de nave espacial:
Editar conversões:
fonte
*.X
operador de propagação muitas vezes pode ser escrito como.X
Como o Groovy é uma linguagem um pouco detalhada, você pode usar o Groovys MOP para reduzir as chamadas de método.
O seguinte snippet, por exemplo, seria recompensado após o quarto uso:
Dica de golfe editar:
Ou você sabe:
fonte
grep
é curto e funciona em vários problemasobter os caracteres de uma string como uma lista com espaços e sem elementos
'ABC XYZ'.grep()
iniciais : retorna[A, B, C, , X, Y, Z]
grep com regexp é menor que a conversão para maiúscula, se necessário: em
it.grep(~/(?i)$c/)
vez deit.toUpperCase().grep(c)
fonte
'ABC XYZ'as Set
é um personagem menor e funciona na maioria dos mesmos lugaresObtendo uma matriz de uma lista de objetos
Se você tiver uma lista de objetos como:
Você pode gerar um ArrayList com uma determinada propriedade usando:
BÔNUS: Groovy ... no Rails!
Bem, no Grails Framework , precisamos obter muitos valores de um select com vários atributos . Você pode usar loops, nivelar e outras estruturas mais comuns de programação, mas pode salvar algumas linhas. Se você tem um select como:
Então, no seu controlador, você pode escrever simplesmente:
fonte