Type Casting com Action Script 3.0

Converter uma expressão de um tipo dado em um outro tipo é conhecido como type-casting ou conversão de tipos. Agora o Action Script 3.0 tem suporte à esse recurso. já existente em outras linguagens como C, C++ e PHP.

Os resultados do uso dessa técnica dependerão to tipo de dado envolvido. Se você não conhece os tipos de dados disponíveis no Action Script 3.0 leia Novos tipos de dados no Action Script 3.0. Para usar o type-casting, você deve escrever o tipo de dado e a variável a ser convertida entre parênteses (“()”) . Por exemplo o código a seguir converte uma variável Booleana em inteiro.

ActionScript

  1. var myBoolean:Boolean = true;
  2. var myUINT:uint = uint(myBoolean);

Convertendo para int, uint e Number
Você pode converte dados numéricos de três tipos: int, uint e Number. Caso o Flash Player for incapaz de converter o número para alguma razão, o valor padrão será 0. Se você converter um valor Boolean em um Number, True torna-se o valor 1 e false torna-se o valor 0.

ActionScript

  1. var myBoolean:Boolean = true;
  2. var myUINT:uint = uint(myBoolean);
  3. var myINT:int = int(myBoolean);
  4. var myNum:Number = Number(myBoolean);
  5. trace(myUINT, myINT, myNum); // output: 1 1 1
  6. myBoolean = false;
  7. myUINT = uint(myBoolean);
  8. myINT = int(myBoolean);
  9. myNum = Number(myBoolean);
  10. trace(myUINT, myINT, myNum); // output: 0 0 0

Strings que possuam somente dígitos, podem ser convertidas em tipos numéricos. Os tipos numéricos também podem ser convertidos em Strings assim como números negativos ou Strings que representem um valor hexadecimal (por exemplo 0x1A). O processo da conversão ignora caracteres de espaço em brancos. Você pode também converter Strings como números de ponto flutuante (float) usando Number(). A inclusão de um ponto decimal faz com que o uint() e o int() retornem um inteiro com os caracteres com decimal. Para o exemplo, os seguintes valores de String podem ser convertidos em números.

ActionScript

  1. trace(uint("5"));     // Output: 5
  2. trace(uint("-5"));    // Output: -5
  3. trace(uint(" 27 "));  // Output: 27
  4. trace(uint("3.7"));   // Output: 3
  5. trace(int("3.7"));    // Output: 3
  6. trace(int("0x1A"));   // Output: 26
  7. trace(Number("3.7")); // Output: 3.7

Strings contenham caracteres não numéricos retornam 0 quando convertidos com Number().

ActionScript

  1. trace(uint("5a"));    // Output: 0
  2. trace(uint("ten"));   // Output: 0
  3. trace(uint("17 63")); // Output: 0

Nas versões anteriores do ActionScript, tem a uma função Number() mais parecida com o Number() do Action Script 3.0 entretanto, difere na maneira de como converte os dados. Se você fornecer uma String com um 0 usando Number() do Action Script 2.0, o número está interpretado como um octal e convertido a seu equivalente decimal. Isto não acontece com o Number() em ActionScript 3,0. Por exemplo, o seguinte código gera a saída diferente quando compilado usando versões diferentes de ActionScript.

ActionScript

  1. trace (Number("044"));
  2. // ActionScript 3.0 output: 44
  3. // ActionScript 2.0 output: 36

Vantagens de usar Type-Casting
Você ganhará em segurança e performance, por exemplo você pode usar o type-casting para garantir que um inteiro só poderá ser inteiro para que o valor recebido da variável não cause um bug e um possível travamento do aplicativo (coredump) alem de fazer com que o aplicativo gerencie melhor a memória.

Casting objects to a different type
http://livedocs.macromedia.com/labs/1/flex/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001822.html#wp119034

Type Juggling
http://www.zend.com/manual/language.types.type-juggling.php

Coredump
http://en.wikipedia.org/wiki/Core_dump

ActionScript 3.0, Flash, Flash Platform, Flex, PHP, Principal, RIA

Leave a Reply