mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2026-01-04 10:09:56 +03:00
Currently including `zh_CN` and `es` which both have very high completion ratios. Others will be added once they reach a significant percentage too. These RST files will be used by godot-docs in place of its `classes` folder after we sync with https://github.com/godotengine/godot-docs/pull/5458. The update workflow is manual for now (example for `zh_CN`): - Build `godotengine/godot` in the branch we currently track (now `3.x`) - Run `godot --doctool -l zh_CN` - Run `cd doc && make rst LANGARG=zh_CN` - Copy `doc/_build/rst/*` to `classes/zh_CN/` here - Make sure to have `classes/zh_CN/index.rst` copied from `docs/classes`
93 lines
5.9 KiB
ReStructuredText
93 lines
5.9 KiB
ReStructuredText
:github_url: hide
|
|
|
|
.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
|
|
.. DO NOT EDIT THIS FILE, but the Variant.xml source instead.
|
|
.. The source is found in doc/classes or modules/<name>/doc_classes.
|
|
|
|
.. _class_Variant:
|
|
|
|
Variant
|
|
=======
|
|
|
|
El tipo de datos más importante de Godot.
|
|
|
|
Descripción
|
|
----------------------
|
|
|
|
En programación de computadoras, una clase Variante es una clase que está diseñada para almacenar una variedad de otros tipos. A los lenguajes de programación dinámicos como PHP, Lua, JavaScript y GDScript les gusta usarlos para almacenar datos de variables en el backend. Con estas Variantes, las propiedades son capaces de cambiar los tipos de valores libremente.
|
|
|
|
::
|
|
|
|
var foo = 2 # foo es dinámicamente un entero
|
|
foo = "¡Ahora el foo es una string!"
|
|
foo = Reference.new() # foo es un objeto
|
|
var bar int = 2 # la bar es un entero escrito estáticamente.
|
|
# bar = "Uh oh! No puedo hacer que las variables estáticas se conviertan en un tipo diferente!"
|
|
|
|
Godot rastrea todas las variables de la API de scripting dentro de las Variantes. Sin siquiera darse cuenta, usa las Variants todo el tiempo. Cuando un determinado lenguaje aplica sus propias reglas para mantener los datos escritos, entonces ese lenguaje está aplicando su propia lógica personalizada sobre la API de scripting base Variante.
|
|
|
|
- GDScript envuelve automáticamente los valores en ellos. Mantiene todos los datos en Variantes simples de forma predeterminada y luego, opcionalmente, aplica reglas de escritura estática personalizadas en los tipos de variables.
|
|
|
|
- VisualScript también realiza un seguimiento de las propiedades dentro de las Variantes, pero también utiliza la escritura estática. La interfaz GUI hace que las propiedades tengan un tipo particular que no cambie con el tiempo.
|
|
|
|
- C# es de tipo estático, pero utiliza el tipo Mono ``object`` en lugar de la clase Variant de Godot cuando necesita representar un valor dinámico. ``object`` es el equivalente del tiempo de ejecución de Mono del mismo concepto.
|
|
|
|
- El lenguaje estáticamente escrito NativeScript C++ no define una clase Variant-like incorporada. Los enlaces GDNative de Godot proporcionan su propio godot::Clase variante para los usuarios; Cualquier punto en el que el código C++ comience a interactuar con el tiempo de ejecución de Godot es un lugar en el que podrías tener que comenzar a envolver datos dentro de los objetos Variant.
|
|
|
|
La función global :ref:`@GDScript.typeof<class_@GDScript_method_typeof>` devuelve el valor enumerado del tipo de Variante almacenado en la variable actual (véase :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>`).
|
|
|
|
::
|
|
|
|
var foo = 2
|
|
match typeof(foo):
|
|
TYPE_NIL:
|
|
print("foo es nulo")
|
|
TYPE_INTEGER:
|
|
print("foo es un entero")
|
|
TIPO_OBJECT:
|
|
# NotA que los objetos son su propia categoría especial.
|
|
# Para obtener el nombre del tipo de Objeto subyacente, necesitas el método `get_class()`.
|
|
print("foo es a(n) %s" % foo.get_class()) # Inyectar el nombre de la clase en una string formateada.
|
|
# Nota también que aún no hay forma de obtener fácilmente la string "nombre_de_clase" de un script.
|
|
# Para obtener ese valor, es necesario profundizar en una configuración oculta de ProjectSettings: un Array de diccionarios llamada "_global_script_classes".
|
|
# Abre tu archivo project.godot para verlo de cerca.
|
|
|
|
Una Variant sólo ocupa 20 bytes y puede almacenar casi cualquier tipo de datos de motor en su interior. Las Variants rara vez se utilizan para mantener la información durante largos períodos de tiempo. En cambio, se utilizan principalmente para la comunicación, la edición, la serialización y el desplazamiento de datos.
|
|
|
|
Godot ha invertido específicamente en hacer que su clase de Variant sea lo más flexible posible; tanto es así que se utiliza para una multitud de operaciones para facilitar la comunicación entre todos los sistemas de Godot.
|
|
|
|
Una Variant:
|
|
|
|
- Puede almacenar casi cualquier tipo de datos.
|
|
|
|
- Puede realizar operaciones entre muchas variantes. GDScript utiliza la Variant como su tipo de datos atómico/nativo.
|
|
|
|
- Puede ser "hashed", por lo que puede ser comparado rápidamente con otras variantes.
|
|
|
|
- Puede ser usado para convertir con seguridad entre tipos de datos.
|
|
|
|
- Puede ser usado para abstraer métodos de llamada y sus argumentos. Godot exporta todas sus funciones a través de variants.
|
|
|
|
- Puede utilizarse para diferir las llamadas o mover datos entre hilos.
|
|
|
|
- Puede ser serializado como binario y almacenado en disco, o transferido a través de la red.
|
|
|
|
- Puede ser serializado a texto y usarlo para imprimir valores y configuraciones editables.
|
|
|
|
- Puede funcionar como una propiedad exportada, de modo que el editor puede editarla universalmente.
|
|
|
|
- Puede ser usado para diccionarios, arrrays, analizadores, etc.
|
|
|
|
\ **Contenedores (Array y Diccionario):** Ambos se implementan utilizando variants. Un :ref:`Dictionary<class_Dictionary>` puede hacer coincidir cualquier tipo de datos utilizado como clave con cualquier otro tipo de datos. Un :ref:`Array<class_Array>` sólo contiene una array de Variants. Por supuesto, una Variant también puede contener un :ref:`Dictionary<class_Dictionary>` y un :ref:`Array<class_Array>` en su interior, lo que lo hace aún más flexible.
|
|
|
|
Las modificaciones de un contenedor modificarán todas las referencias a él. Debe crearse un :ref:`Mutex<class_Mutex>` para bloquearlo si se desea un acceso multihilo.
|
|
|
|
Tutoriales
|
|
--------------------
|
|
|
|
- :doc:`../development/cpp/variant_class`
|
|
|
|
.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
|
|
.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
|
|
.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
|