Rufen Sie eine mit Null initialisierte Variable vom Typ interne Funktion auf

Ich habe Solidity- Dokumentation darüber gelesen, wann eine Ausnahme im Assert-Stil generiert wird. Im 6. Punkt heißt es:

"Wenn Sie eine mit Null initialisierte Variable vom Typ interne Funktion aufrufen."

Ich verstehe es nicht. Kann mir jemand ein Beispiel geben?

Antworten (1)

Variablen können Funktionszeiger enthalten. Wenn Sie sie nicht initialisiert lassen und dann versuchen, sie aufzurufen, schlägt der Aufruf fehl, da die Variable mit Null initialisiert wurde und daher keinen Zeiger auf eine aufrufbare Funktion enthält. Beispiel:

function b(int x, int y) internal pure returns (int)
{
    return x * y;
}

function test1() external pure returns (int)
{
    // Variable containing a function pointer
    function (int, int) internal pure returns (int) funcPtr;

    funcPtr = b;

    // This call to funcPtr will succeed
    return funcPtr(4, 5);
}

function test2() external pure returns (int)
{
    // Variable containing a function pointer
    function (int, int) internal pure returns (int) funcPtr;

    // This call will fail because funcPtr is still a zero-initialized function pointer
    return funcPtr(4, 5);
}