Módulos y scripts
Módulos y scripts
Move tiene dos tipos diferentes de programas: Módulos y Scripts . Los módulos son bibliotecas que definen tipos de estructuras junto con funciones que operan en estos tipos. Los tipos de estructura definen el esquema del almacenamiento global de Move y las funciones del módulo definen las reglas para actualizar el almacenamiento. Los propios módulos también se almacenan en el almacenamiento global. Los scripts son puntos de entrada ejecutables similares a una main
función en un lenguaje convencional. Un script normalmente llama a funciones de un módulo publicado que realiza actualizaciones del almacenamiento global. Los scripts son fragmentos de código efímeros que no se publican en el almacenamiento global.
Un archivo fuente de Move (o unidad de compilación ) puede contener varios módulos y scripts. Sin embargo, publicar un módulo o ejecutar un script son operaciones de VM independientes.
Sintaxis
Guiones
:::tutorial de consejos Para aprender a publicar y ejecutar un script de Move, siga el ejemplo de scripts de Move. :::
Un script tiene la siguiente estructura:
Copiar
Un script
bloque debe comenzar con todas sus use
declaraciones, seguidas de cualquier constante y (finalmente) la declaración de la función principal. La función principal puede tener cualquier nombre (es decir, no es necesario llamarla main
), es la única función en un bloque de script, puede tener cualquier número de argumentos y no debe devolver un valor. A continuación se muestra un ejemplo con cada uno de estos componentes:
Copiar
Los scripts tienen un poder muy limitado: no pueden declarar amigos, tipos de estructuras ni acceder al almacenamiento global. Su objetivo principal es invocar funciones del módulo.
Módulos
Un módulo tiene la siguiente sintaxis:
Copiar
donde <address>
es una dirección nominal o literal válida.
Por ejemplo:
Copiar
La module 0x42::test
parte especifica que el módulo test
se publicará con la dirección de la cuenta 0x42
en el almacenamiento global.
Los módulos también se pueden declarar utilizando direcciones con nombre. Por ejemplo:
Copiar
Debido a que las direcciones con nombre solo existen en el nivel del idioma fuente y durante la compilación, las direcciones con nombre serán sustituidas completamente por su valor en el nivel de código de bytes. Por ejemplo si tuviéramos el siguiente código:
Copiar
y lo compilamos con my_addr
set to 0xC0FFEE
, entonces operativamente sería equivalente a lo siguiente:
Copiar
Sin embargo, a nivel de fuente, estos no son equivalentes : m::foo
se debe acceder a la función a través de la my_addr
dirección nombrada y no a través del valor numérico asignado a esa dirección.
Los nombres de los módulos pueden comenzar con letras a
to z
o letras A
to Z
. Después del primer carácter, los nombres de los módulos pueden contener guiones bajos _
, letras a
para z
, letras A
para Z
o dígitos 0
para 9
.
Copiar
Normalmente, los nombres de los módulos comienzan con una letra minúscula. Un módulo llamado my_module
debe almacenarse en un archivo fuente llamado my_module.move
.
Todos los elementos dentro de un module
bloque pueden aparecer en cualquier orden. Básicamente, un módulo es una colección de types
y functions
. La use
palabra clave se utiliza para importar tipos de otros módulos. La friend
palabra clave especifica una lista de módulos confiables. La const
palabra clave define constantes privadas que se pueden utilizar en las funciones de un módulo.
Last updated