Colegas, ontem lendo um artigo sobre programação e hoje lendo um livro, me deparei duas vezes com o expressão açúcar sintético. Por exemplo: tal coisa é um açúcar sintético que faz tal coisa por baixo dos panos.
Nao eh acucar sintetico, eh syntax sugar, ou syntactic, que seria sintatico ou sintaxe.
Agora o que significa?? Bom sao facilidades na sintaxe da linguagem para fazer certas coisas.
Por exemplo em Scala, o . nao eh necessario em alguns casos, ex:
scala> val nome = "abcde"
nome: String = abcde
scala> nome foreach println
a
b
c
d
e
//nome foreach println eh um syntax suggar para:
nome.foreach(println)
1 + 1 // eh um syntax sugar para
1.+(1)
Deu pra entender? Sao maneiras mais curtas ou mais faceis de se escrever certas coisas.
[quote=Marky.Vasconcelos]Um exemplo no Java seria os for-each iterators.
for(Objeto obj : listaObjetos)
//Faz algo com obj
Em tempo de compilação isso vai virar um for (y = 0 | y < size(listaObjetos) | y++) ou entao um while com Iterator.
[/quote]
Fiz uma classe com esse código e outra usando for de i até size().
Olhando os códigos gerados com “javap -c <nome_classe>”, a primeira classe gerou um código com iterator e a segunda com chamadas a size() e get().
[quote=Schuenemann]
Fiz uma classe com esse código e outra usando for de i até size().
Olhando os códigos gerados com “javap -c <nome_classe>”, a primeira classe gerou um código com iterator e a segunda com chamadas a size() e get().[/quote]
Se não me engano é assim:
Isso:
Collection<MyClass> col = //..... considere qualquer herdeiro de Collection
for (MyClass elem : col) {
dosomething(elem);
}
vira isso:
Collection<MyClass> col = //.....
for (Iterator<MyClass> iter = col.iterator(); iter.hasNext(); ) {
MyClass elem = iter.next();
dosomething(elem);
}