Solidez – Mapeos

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 : 

Creating a Mapping

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 : 
 

Adding Values to mapping

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 : 
 

Getting Values

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 : 
 

Counting Mappings

Publicación traducida automáticamente

Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *