El mapeo en Solidity actúa como una tabla hash o diccionario en cualquier otro idioma. Estos se utilizan para almacenar los datos en forma de pares clave-valor, una clave puede ser cualquiera de los tipos de datos incorporados, pero los tipos de referencia no están permitidos, mientras que el valor puede ser de cualquier tipo. Las asignaciones se utilizan principalmente para asociar la dirección única de Ethereum con el tipo de valor asociado.
Sintaxis:
mapping(key => value) <access specifier> <name>;
Creación de una asignación
El mapeo se define como cualquier otro tipo de variable, que acepta un tipo de clave y un tipo de valor.
Ejemplo: En el siguiente ejemplo, el contrato mapping_example se define una estructura y se crea el mapeo.
Solidity
// Solidity program to // demonstrate mapping pragma solidity ^0.4.18; // Defining contract contract mapping_example { //Defining structure struct student { // Declaring different // structure elements string name; string subject; uint8 marks; } // Creating a mapping mapping ( address => student) result; address[] public student_result; }
Producción :
Agregar valores al mapeo
A medida que se crea la asignación, intentemos agregar algunos valores a la asignación para una mejor comprensión.
Ejemplo: En el siguiente ejemplo, el contrato mapping_example define una estructura, se crea la asignación y se agregan valores a la asignación.
Solidity
// Solidity program to // demonstrate adding // values to mapping pragma solidity ^0.4.18; // Creating contract contract mapping_example { //Defining structure struct student { //Declaring different // structure elements string name; string subject; uint8 marks; } // Creating mapping mapping ( address => student) result; address[] public student_result; // Function adding values to // the mapping function adding_values() public { var student = result[0xDEE7796E89C82C36BAdd1375076f39D69FafE252]; student.name = "John"; student.subject = "Chemistry"; student.marks = 88; student_result.push( 0xDEE7796E89C82C36BAdd1375076f39D69FafE252) -1; } }
Producción :
Obtener valores
Hemos agregado valores al mapeo, para recuperar los valores tenemos que crear una función que devuelva los valores agregados al mapeo.
Ejemplo: en el siguiente ejemplo, el contrato mapping_example define una estructura, se crea la asignación, se agregan valores a la asignación y se recuperan valores de la asignación.
Solidity
// Solidity program to // demonstrate retrieve // values from the mapping pragma solidity ^0.4.18; contract mapping_example { // Defining Structure struct student { // Declaring different data types string name; string subject; uint8 marks; } // Creating mapping mapping ( address => student) result; address[] student_result; // Function adding values to the mapping function adding_values() public { var student = result[0xDEE7796E89C82C36BAdd1375076f39D69FafE252]; student.name = "John"; student.subject = "Chemistry"; student.marks = 88; student_result.push( 0xDEE7796E89C82C36BAdd1375076f39D69FafE252) -1; } // Function to retrieve // values from a mapping function get_student_result( ) view public returns (address[]) { return student_result; } }
Producción :
Asignaciones de conteo
Las asignaciones se pueden contar para que podamos saber cuántos valores se almacenan en la asignación.
Ejemplo: en el siguiente ejemplo, el contrato mapping_example define una estructura, se crea la asignación, se agregan valores a la asignación y se recuperan valores de la asignación.
Solidity
// Solidity program to // count number of // values in a mapping pragma solidity ^0.4.18; contract mapping_example { // Defining structure struct student { // Declaring different // structure elements string name; string subject; uint8 marks; } // Creating mapping mapping (address => student) result; address[] student_result; //Function adding values to the mapping function adding_values() public { var student = result[0xDEE7796E89C82C36BAdd1375076f39D69FafE252]; student.name = "John"; student.subject = "Chemistry"; student.marks = 88; student_result.push( 0xDEE7796E89C82C36BAdd1375076f39D69FafE252) -1; } // Function to retrieve // values from the mapping function get_student_result( ) view public returns (address[]) { return student_result; } // Function to count number // of values in a mapping function count_students( ) view public returns (uint) { return student_result.length; } }
Producción :
Publicación traducida automáticamente
Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA