¿Existe la necesidad de verificar el valor nulo después del lanzamiento?

Ejemplo:

MyReceiver my = MyReceiver(_to);    // To is an arbitrary address user provided
my.someFunction();                  // Do I need to check for my == null before calling?

Por extraño que parezca, no veo a nadie haciéndolo.

Respuestas (1)

En Solidity no existe tal cosa como un "nulo" (al menos puede verificar si la dirección pasada no es especial como 0x00)

MyReceiver my = MyReceiver(_to);

esta línea almacenará _to address en la variable mye indica al compilador que estamos tratando con un contrato (para construir las llamadas siguiendo la ABI). ¡No es como los objetos OOP!

compruébalo usando este código de fragmento:

MyReceiver  c=MyReceiver(0x1234);
function test() view returns (address) {
 return c;
    }

si no desea verificar si existe el contrato, puede usar en su lugar

extcodesize(a)  

para verificar si el tamaño del código en la dirección dada es 0 o no.

Gracias Badr, ¿qué tal si existe el contrato, pero no tiene implementada la función someFunction()?
esto activará la función de reserva en el contrato llamado. de lo contrario, la llamada fallará. además, si encuentra útil la respuesta anterior, piense en aceptarla;) tratamos de minimizar las preguntas repetidas.