Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Classe de variante
Sobre
Variant é o tipo de dado mais importante no Godot. Um Variant ocupa apenas 24 bytes em plataformas de 64 bits (20 bytes em plataformas de 32 bits) e pode armazenar quase qualquer tipo de dado do motor dentro dele. Variants são raramente usados para manter informações por longos períodos de tempo; em vez disso, são usados principalmente para comunicação, edição, serialização e, geralmente, para mover dados.
Uma Variant pode:
Armazenar quase qualquer tipo de dado.
Executar operações entre muitas Variant (o GDScript usa Variant como seu tipo de dado atômico/nativo).
Passar por um hash, para que possa ser comparado rapidamente com outros variants.
Ser usado para converter com segurança entre tipos de dados.
Ser usado para abstrair chamadas de métodos e seus argumentos (o Godot expõe todas as suas funções por meio de variants).
Ser usado para adiar chamadas ou mover dados entre threads.
Ser serializado como binário e armazenado em disco ou ser transferido pela rede.
Ser serializado em texto e usado para imprimir valores e configurações editáveis.
Trabalhar como uma propriedade exportada, para que o editor possa editá-la universalmente.
Ser usada para dicionários, matrizes, analisadores (parsers), etc.
Basicamente, graças à classe Variant, escrever a Godot foi uma tarefa muito, mas muito mais fácil, pois esta permite construções altamente dinâmicas não comuns em C++ com menos esforço. Torne-se um amigo da Variant hoje.
Nota
Todos os tipos dentro do Variant, exceto Nil e Object, não podem ser null e devem sempre armazenar um valor válido. Esses tipos dentro do Variant são, portanto, chamados de tipos não-anuláveis (non-nullable).
One of the Variant types is Nil which can only store the value null. Portanto, é possível que um Variant contenha o valor null, embora todos os tipos Variant, excluindo Nil e Object, sejam não-anuláveis.
Referências
Lista de tipos Variant
Esses tipos estão disponíveis em Variant:
Tipo |
Notas |
|---|---|
Nil (pode armazenar apenas |
Tipo anulável |
Contraparte 2D do AABB |
|
Contraparte 3D do Rect2 |
|
Tipo anulável |
|
Contêineres: Array e Dictionary
Tanto Array quanto Dictionary são implementados usando variants. Um Dictionary pode corresponder a qualquer tipo de dado usado como chave para qualquer outro tipo de dado. Um Array apenas contém uma matriz de Variants. Claro, um Variant também pode conter um Dictionary ou um Array dentro dele, tornando-o ainda mais flexível.
Modificações em um contêiner modificarão todas as referências a ele. Um Mutex deve ser criado para bloqueá-lo se o acesso multi-threaded for desejado.