Как проверить, не инициализирована ли переменная состояния адреса типа?
В контракте 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);
}
}
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