Как проверить, не инициализирована ли переменная состояния адреса типа?

В контракте B мне нужно предоставить адрес контракта, прежде чем я могу вызывать функции logUint и logString. Как проверить эти функции, что Логгер не пуст? if(!logger) и if(!address(logger)) не компилируется.

contract A {
    function logUint(uint a);
    function logString(string a);
}

contract B {
    A logger;
    function registerLogger(address loggerAddress){
        logger = A(loggerAddress);
    }       
    function logUint(uint a){
        //if(/*what do I put here*/)
        logger.logUint(a);
    }
    function logString(string a){
        //if(/*what do I put here*/)
        logger.logString(a);
    }   
}
5 голосов | спросил manidos 12 AM000000100000004531 2016, 10:55:45

2 ответа


3

Использование: address(contractInstance) != 0

Пример:

function logUint(uint a){
    if (address(logger) != 0) {
        logger.logUint(a);
    }
}
ответил eth 12 PM00000020000003531 2016, 14:51:35
1

Надеюсь, кто-то предложит что-то более чистое, но я обычно делаю:

address NULL_ADDRESS;
if (logger == NULL_ADDRESS) { whatever; }
ответил Edmund Edgar 12 AM000000110000001731 2016, 11:11:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132