Solidity Minimalist # 7. Tipos de mapeo

En esta lección, presentaremos la tabla hash en solidez: el tipo de mapeo (Mapping).

Cartografía

En el mapeo, las personas pueden consultar el valor correspondiente (Valor) a través de la clave (Clave), por ejemplo: consultar la dirección de su billetera a través de la identificación de una persona.

El formato de la asignación de declaración es mapeo (_KeyType => _ValueType), donde _KeyType y _ValueType son los tipos de variables de Key y Value respectivamente. ejemplo:

mapping(uint => address) public idToAddress; // id映射到地址
mapping(address => address) public swapPair; // 币对的映射,地址到地址

reglas de mapeo

  • Regla 1 : el _KeyType asignado solo puede elegir el tipo predeterminado de solidez, como uint, dirección, etc., y no puede usar una estructura personalizada. Y _ValueType puede usar un tipo personalizado. El siguiente ejemplo informará un error porque _KeyType usa nuestra estructura personalizada:
// 我们定义一个结构体 Struct
struct Student{
  uint256 id;
  uint256 score; 
}
mapping(Student => uint) public testVar;

  • Regla 2 : la ubicación de almacenamiento de la asignación debe ser almacenamiento, por lo que se puede usar para variables de estado de contrato, variables de almacenamiento en funciones y parámetros de funciones de biblioteca (ver ejemplos ). No se puede utilizar en los parámetros o devolver resultados de funciones públicas, porque el mapeo registra una relación (par clave - valor).
  • Regla 3 : si el mapeo se declara como público, solidity creará automáticamente una función getter para usted, y puede consultar el valor correspondiente a través de la clave.
  • Regla 4 : la sintaxis del par clave-valor agregado al mapeo es _Var[_Key] = _Value, donde _Var es el nombre de la variable de mapeo, y _Key y _Value corresponden al par clave-valor recién agregado. ejemplo:
function writeMap (uint _Key, address _Value) public{
  idToAddress[_Key] = _Value;
}

Principio de mapeo

  • Principio 1 : el mapeo no almacena ninguna información clave (clave), ni información de longitud.
  • Principio 2 : el mapeo usa keccak256 (clave) como compensación para acceder al valor.
  • Principio 3 : debido a que Ethereum define todo el espacio no utilizado como 0, el valor inicial de la clave (Valor) no asignada (Clave) es el valor predeterminado de cada tipo, como el valor predeterminado de uint es 0.

Verifique en Remix (tome Mapping.sol como ejemplo)

  • Ejemplo de asignación 1 Implementación
  • Ejemplo de mapeo 2 valor inicial
  • Ejemplo de mapeo 3 par clave-valor

Resumir

En esta lección, presentamos el uso de la tabla hash en solidity - mapeo (Mapeo). Hasta ahora, hemos aprendido todos los tipos de variables comunes y luego aprenderemos sobre el flujo de control if-else, while, etc.

Supongo que te gusta

Origin blog.csdn.net/u010359479/article/details/128870337
Recomendado
Clasificación