Para que serve o " ? " ?
17/07/2012 02:25
0
Queria saber para que serve essa interrogação "?" ?


params.max = Math.min(params.max ? params.int('max')
Tags: interrogação "?"


0
Outra pergunta, porque coloca entre [] as coisas. Exemplo:

def show() {
[book: Book.get(params.id)]
}
17/07/2012 02:51


0
O primeiro parece ser uma operação ternária

O segundo é o jeito do Groovy pra formar um Map (que ele está retornando pra view) - referência: http://groovy.codehaus.org/Collections

17/07/2012 11:25


0
? - Safe navigation operator, verifica se o valor da propriedade é nulo antes de acessar para não gerar uma NullPointerException.

a última variável é o retorno e neste caso [] é um Map.
17/07/2012 11:38


0
mussato, a julgar pelo contexto (sequencia de perguntas e o nome da variável) me parece o params.max usado na paginação ou seja isso aí está em todo controller gerado por scaffold e realmente é um ternário, :-) fica as duas situações então o operador pode ser usado como "Safe Navigation e Ternary operator.

17/07/2012 11:42


1
Olá, Marcos:

1o. caso:
Essa "?" é um jeito de evitar "if-else". Por exemplo, o código...

String sit = ""
if (idade>=18)
sit="maioridade"
else
sit="menor idade"


por...

String sit = idade>=18?"maioridade":"menor idade"


Pode-se ainda usá-lo omitindo o primeiro valor quando se testa apenas se certo objeto é nulo:
String s1 = null
String s2 = s1?:"não tem"
// "s2" assume o valor "não tem", mas se "s1" não fosse *null*, "s2" teria o valor de "s1"


1
2o. caso:
Temos aqui 2 conceitos que não se vê no Java: O jeito de criar mapas e de fornecer o retorno a um método.

Exemplos de mapas em Groovy:
[1:'amor',2:'paz',3:'amizade']
['m':'masculino','f':'feminino','h':'homosexual']
[abc:'zé buduia',xyz:'zé ruela',kkk:'maria bigodenha'] // Isso mesmo: quando as chaves são string não precisa por aspas!
Sempre o que vem antes de ":" é a chave e o que vem depois é o valor.

Retorno de métodos em Groovy: O return é opcional:
Exemplo em Java:

public String vai() {
// tal código
return "foi!"
}


Exemplo em Groovy:

public String vai() {
// tal código
"foi!"
[b][/b]
}

ou

def vai() {
// tal código
"foi!"
[b][/b]
}

* poderia fazer return "foi!" se quiser. Também funciona ;)


0
por favor, ignore esses
"[b][/b]"

Nos códigos Groovy... falha nossa rsrsrs.


0
Isso aí José, dá até pra colocar código legado Java junto com o Groovy, é realmente muito legal.
17/07/2012 12:12


0
Valeu, vou "pentelha" muito vocês, para tira as minhas duvidas sobre Groovy e Grails.

17/07/2012 13:52


0
Não ta pentelhando ninguem =)

Fica a vontade pra mandar as dúvidas
17/07/2012 15:08



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto