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