Diferencia entre esto y la dirección (esto) en Solidity

Solidity es un lenguaje de programación de alto nivel que está diseñado para la implementación de un contrato inteligente . La solidez es el lenguaje que está en sus etapas iniciales y está en constante evolución. Hay muchos cambios importantes que se han solidificado desde su implementación. La versión actual de solidity es 0.8.13 y hasta ahora ha habido cuatro cambios importantes en solidity.

Algunos de los cambios importantes incluyen:

1. Solidity v0.5.0 Breaking Changes
2. Solidity v0.6.0 Breaking Changes
3. Solidity v0.7.0 Breaking Changes
4. Solidity v0.8.0 Breaking Changes

Los cambios de última hora aportan un enfoque diferente a un enfoque ya existente con una mejora. this y address(this) son las mismas cosas que tienen diferentes terminologías debido a estos cambios importantes.

este es el término utilizado para el contrato inteligente cuando la versión de solidez es inferior a 0.5.0 .

address(this) es el término utilizado en las últimas versiones de la solidez para referirse al contrato inteligente.

Comprendamos la diferencia entre los dos términos utilizando un ejemplo de contrato inteligente en Remix IDE.

1. Contrato inteligente usando esto (versión Solidity <0.5.0): 

A continuación se muestra el programa de solidez para implementar el enfoque anterior:

Solidity

// Solidity program to implement 
// the above approach
// SPDX-License-Identifier: GPL-3.0
pragma solidity <0.5.0;
  
contract old_version
{
    address public myAddress_in_old_version = this;
    uint public myBalance_in_old_verison = this.balance;
      
}

Producción: 

Output this

 

Es posible que obtenga una dirección de contrato diferente, pero se puede observar en el resultado anterior que esta palabra clave nos da la dirección del contrato y el saldo del contrato utilizando la función de saldo.

Usando esta palabra clave en la versión 0.5.0 y superior:

Se mostrará el siguiente error al intentar usar esta palabra clave en la versión 0.5.0 y superior. 

 

Se puede observar que el compilador proporciona una sugerencia para usar la dirección (esto) para acceder al miembro de la dirección.

2. Contrato inteligente usando la dirección (esto):
a continuación se muestra el programa de solidez para implementar el enfoque anterior:

Solidity

// Solidity program to implement 
// the above approach
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.5.0 <0.9.0;
  
contract new_version
{
    address public myAddress_in_new_version_ = address(this);
    uint public myBalance_in_new_verison = address(this).balance;
}

Producción:

Output address(this)

 

Es posible que obtenga una dirección de contrato diferente, pero se puede ver que la palabra clave dirección (esta) nos da la dirección del contrato y el saldo del contrato utilizando la función de saldo.

De los ejemplos anteriores, se puede concluir que no hay diferencia entre this y address(this) aparte de los cambios de versión en Solidity.

S. No.

dirección (esta)

este

1. Usado en la versión de Solidity >=5.0.0 Utilizado en la versión de Solidity <= 5.0.0
2. Incorporado en Breaking Change 0.5.0 Se usó inicialmente hasta el cambio de última hora de 0.5.0

Los cambios importantes de 0.5.0 también se pueden encontrar en la documentación de Solidity:

Solidity Documentation

 

Publicación traducida automáticamente

Artículo escrito por atharvapaliwal7 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 *