Conversão de tipo
Conversão de tipo é o processo de alteração de um valor de um tipo para outro.Por exemplo, você pode converter a string "1234" para um número.Além disso, você pode converter qualquer tipo de dados para o String Digite. Algumas conversões de tipo nunca terão êxito.Por exemplo, um Date o objeto não pode ser convertido para um ActiveXObject objeto.
Conversões de tipo podem ser alargamento or restringir: as conversões de expansão nunca estouro de capacidade e sempre será bem sucedida, enquanto as conversões de restrição envolvem a possível perda de informações e podem falhar.
Os dois tipos de conversão podem ser explícito (usando o identificador de tipo de dados) ou implícito (sem o identificador de tipo de dados).Conversões explícitas válidas sempre será bem sucedida, mesmo que ele resultados em perda de informações.Conversões implícitas êxito apenas quando o processo de perde nenhum dado; caso contrário, eles falham e geram um erro de time de execução ou compilar.
Com perdas conversões acontecer quando o tipo de dados original não tem um analógico óbvio o tipo de conversão de destino.Por exemplo, a seqüência de caracteres "Fred" não pode ser convertida em um número.Nesses casos, um valor padrão é retornado da função de conversão de tipo.O Número tipo, o padrão é NaN; para o int tipo, o padrão é o número zero.
Alguns tipos de conversões, tais sistema autônomo de uma seqüência de caracteres a um número, são demorados.As conversões menos seu programa usa, mais eficiente será.
Conversões implícitas
A maioria das conversões de tipo, sistema autônomo atribuir um valor a uma variável, ocorrem automaticamente.O tipo de dados de variável determina o tipo de dados de destino da conversão de expressão.
Este exemplo demonstra como dados podem ser convertidos implicitamente entre um int value, a Seqüência de caracteres valor de e umduplovalor de .
var i : int;
var d : double;
var s : String;
i = 5;
s = i; // Widening: the int value 5 coverted to the String "5".
d = i; // Widening: the int value 5 coverted to the double 5.
s = d; // Widening: the double value 5 coverted to the String "5".
i = d; // Narrowing: the double value 5 coverted to the int 5.
i = s; // Narrowing: the String value "5" coverted to the int 5.
d = s; // Narrowing: the String value "5" coverted to the double 5.
Quando esse código é compilado, avisos de time de compilar poderá informar que as conversões restrição podem falhar ou lentas.
Conversões implícitas restrição podem não funcionar se a conversão requer uma perda de informações.Por exemplo, as linhas a seguir não funcionará.
var i : int;
var f : float;
var s : String;
f = 3.14;
i = f; // Run-time error. The number 3.14 cannot be represented with an int.
s = "apple";
i = s; // Run-time error. The string "apple" cannot be converted to an int.
Conversões explícitas
Para converter explicitamente uma expressão em um tipo de dados específico, use o identificador de tipo de dados seguido pela expressão para converter entre parênteses.Conversões explícitas requerem digitar mais de conversões implícitas, mas você terá mais certeza do resultado.Além disso, conversões explícitas podem lidar com conversões com perdas.
Este exemplo demonstra como dados podem ser convertidos explicitamente entre um int value, a Seqüência de caracteres valor de e umduplovalor de .
var i : int;
var d : double;
var s : String;
i = 5;
s = String(i); // Widening: the int value 5 coverted to the String "5".
d = double(i); // Widening: the int value 5 coverted to the double 5.
s = String(d); // Widening: the double value 5 coverted to the String "5".
i = int(d); // Narrowing: the double value 5 coverted to the int 5.
i = int(s); // Narrowing: the String value "5" coverted to the int 5.
d = double(s); // Narrowing: the String value "5" coverted to the double 5.
Conversões explicitas geralmente funcionará, mesmo se a conversão requer uma perda de informações.Conversão explícita não pode ser usado para converter entre tipos de dados incompatíveis.Por exemplo, não é possível converter Date dados de ou para RegExp dados. Além disso, conversões não são possíveis para alguns valores, porque não há nenhum valor adequado para o qual converter.Por exemplo, é gerado um erro ao tentar converter o valor duplo explicitamenteNaN para um decimal.Isso ocorre porque não há nenhum natural decimal valor que pode ser identificado com NaN.
Neste exemplo, um número com a parte decimal é convertido em um número inteiro e uma seqüência de caracteres é convertida para um inteiro.
var i : int;
var d : double;
var s : String;
d = 3.14;
i = int(d);
print(i);
s = "apple";
i = int(s);
print(i);
A saída é
3
0
O comportamento de conversão explícita depende o tipo de dados original e o tipo de dados de destino.