Web3 - Fundación Solidez

Tipos de datos de solidez

Los cuatro tipos de datos más básicos de Solidity: booleano, uint, int y dirección

bytes es un tipo de datos de nivel inferior, bytes32 es el espacio máximo permitido por la definición
booleana de bytes verdadero y falso
la unidad es un entero , lo que significa que este número no es positivo ni negativo, solo puede ser positivo, y puede decidir darle Espacio de asignación, de hecho, es cuánto almacenamiento se asigna a este número, y puede ser tan grande como sea.Si se escribe uint8, se asignan 8 bits, de la siguiente manera

uint8 favoriteNum = 123;
string str =123”
Int256 faint = -123
address myaddr = “xxxxxxxxxxxx”
bytes32 fabytes = “cat” // “cat”是一个string但是可以自动转化为bytes

El máximo es uint256, si no se asigna, el valor predeterminado es uint256, para uint, el mínimo es configurar 8 bits, porque 8bit es un byte, aumentamos el espacio según el byte. Por ejemplo, uint8, uint16, uint32, etc. Sepa que uint256 es el más grande y el valor predeterminado es 0 si no se asigna ningún valor.
int significa
dirección positiva o negativa significa dirección

función de solidez

Una función o método se refiere a un módulo independiente que ejecuta ciertas instrucciones cuando lo llamamos. Es lo mismo que la función de JavaScript. Denotado por "función".
Las funciones y variables tienen 4 identificadores de visibilidad, son públicos, privados, externos e internos

El público es visible tanto externa como internamente. Cualquiera que interactúe con el contrato puede ver el valor almacenado en la variable identificada por público. Public crea funciones getter para variables de estado y almacenamiento.

uint256 public favorNum;

Agregar público a favorNum en realidad crea una función getter para favorNum. Se devuelve el valor de favorNum.
privado significa que esta función solo se puede llamar en este contrato, y
externo significa que solo es visible fuera del contrato. Indica que cuentas fuera del contrato pueden llamar.
interno significa que solo se puede leer este contrato o el contrato que lo hereda, el valor predeterminado es interno

estructura estructura

Se puede crear una "estructura" sobre los personajes a través de struct,

struct People{
    
    
	Uint256 age;
	String name;
}

El tipo Personas ya está disponible. Nómbrelo person, porque lo convertimos en una estructura, por lo que debemos agregar {} aquí, para que Solidity sepa que se utilizan las variables de estas estructuras.

People public person = People({
    
     age:24,name:”zhangsan”});

Una matriz (array) es una estructura de datos que crea un método de lista, y los datos son una forma de almacenar una lista o una serie de objetos. Crear una matriz es lo mismo que inicializar cualquier otro tipo. Por lo general, el tipo del objeto se declara primero, seguido de la visibilidad del objeto y, finalmente, el nombre de la variable. De la siguiente manera: "[]" representa una matriz

People[] public people;// 没指定大小,表明大小是任意的,是动态数组
People[3] public people;// 最多只能放进去三个People对象。
People memory newperson = People({
    
     age:24,name:”zhangsan”}); // 变量的数据类型必须是“storage”,“memory”,或者“calldata”
people.push(newperson );//通过push添加数据。

Hay 6 formas de almacenar datos en Solidity

1, Pila
2, Memoria
3, Almacenamiento
4, Datos de llamada
5, Código
6, Registros.

"memoria" y "datos de llamada" significan que esta variable existe solo temporalmente, los datos de llamada no se pueden modificar como una variable temporal y la memoria se puede modificar como una variable temporal.
el "almacenamiento" existe fuera de la función de ejecución, incluso fuera de la función de ejecución. El almacenamiento se puede modificar como una variable permanente.

function addPerson(string memory name, uint256 age) public {
    
    
	people.push(People(name,age ));
}

Las estructuras de matriz se consideran tipos especiales en Solidity. Solidity puede conocer automáticamente la posición de la unidad 256. Para la función addPerson, Solidity sabe que uint256 solo existe en el contenido, pero Solidity no está seguro de cuál será la cadena. En principio, una cadena es en realidad una matriz de bytes. Dado que la cadena es una matriz, se debe agregar memoria para que Solidity sepa la ubicación de los datos de la estructura o asignación de la matriz.
Nota : cuando se agregan estructuras, mapas y matrices como parámetros a diferentes funciones, se debe proporcionar una palabra clave "memoria" o "datos de llamada".

Cartografía

Si hay cientos de datos en la matriz People, si encuentra uno de ellos, es muy ineficiente recorrer el índice. En este momento, podemos usar mapeo mapeo, que puede imaginarse como un diccionario, o el mapa en js y java es un Los datos se almacenan en forma de pares clave-valor de grupo, y cada clave devuelve el valor asociado con la clave. Las variables de mapeo se crean de la misma manera que otras variables.

mapping(string => uint256) public nameToAge; 

Cada nombre se asignará a una edad específica y también se agregará a la asignación al agregar personas a la matriz.

function addPerson(string memory name, uint256 age) public {
    
    
people.push(People(name,age ));
nameToAge[name] = age;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43506403/article/details/129767086
Recomendado
Clasificación