Dica: i++ ou ++i?

Como assim?

Para alguns esta pergunta pode até ser manjada, mas para a maioria que programa em AS3, pode ser uma pegadinha e também faz diferença em alguns casos. Se você ainda não entendeu, estamos falando de pré-incrementação (++i) e pós incrementação (i++).

A incrementação é efetuada através do operador ++, e serve para incrementar um valor numérico. Por exemplo:

1
2
3
4
var i:int = 0;
i++;

trace(i); // 1

Como você pode perceber, o valor aumentou em 1. Esse operador é muito comum em situações onde você necessita de um contador e, normalmente, é utilizada em um for.

1
2
3
4
for (var i:int = 0; i < 10; i++)
{
    trace(i);
}

E é exatamente pelo fato de normalmente usarmos a pós-incrementação (i++) que a maioria não sabe a diferença entre ela e a pré-incrementação. Vamos usá-la então, no nosso for:

1
2
3
4
for (var i:int = 0; i < 10; ++i)
{
    trace(i);
}

Viu a diferença? Não? É porque esse operador só faz diferença quando atribuído a alguma variável, ou quando é dado saída nele. Um simples teste para mostrar a diferença seria:

1
2
3
4
5
var i:int = 0;
trace(i++); // 0

var j:int = 0;
trace(++j); // 1

Como você pode ver, i++ retornou 0 e ++j retornou 1. O que acontece é que no caso de ++j o valor é incrementado antes (pré) e depois passado, e no caso de i++ o valor de i é passado e depois incrementado (pós).

Isso é muito útil quando precisamos incrementar um valor e associá-lo a uma variável pois, ao invés de fazermos isso:

1
2
3
4
5
var i:int = 0;

i++;

var currentIndex:int = i;

Podemos fazer simplesmente isso:

1
2
3
4
5
var i:int = 0;

var currentIndex:int = ++i;

trace(currentIndex); // 1

É isso aí, uma dica simples, mas que provavelmente irá lhe ajudar. Abraço pessoal, em breve um novo post.

Leave a Comment