2016-06-16 10 views
9
struct buyer{ 
     uint amount; 
     Status status; 
    } 

    mapping(address=>buyer) public buyers; 
    mapping(uint=>address) buyerIndex; 
    uint public buyerNum; 
    //Order a product. 
    function(){ 
     uint doubleValue=value*2; 
     uint amount=msg.value/doubleValue; 
     if(buyers[msg.sender]==null){ //Error in this line 
     buyer abuyer=buyer({amount:amount,status:Status.Created}); //Error in this line 
     buyerNum++; 
     buyerIndex[buyerNum]=msg.sender; 
     buyers[msg.sender]=abuyer; 
    }else{ 
     buyers[msg.sender].amount+=amount; 
    } 
     Order(msg.sender,amount*doubleValue,amount); 

} 

Если покупатель не записан внутри покупателя, то покупательNum ++; , но я не знаю, как узнать, находится ли покупатель в карточкеЕсть ли нуль, как вещь в прочности

+0

Может быть, как [Как я могу проверить, является ли переменная или массив устанавливается или пустым или нулевым] (http://ethereum.stackexchange.com/a/2134/87), [Проверка нулевого значения структуры] (http://ethereum.stackexchange.com/q/2502/87) или [Что такое нулевое значение для строки] (http: // ethereum. stackexchange.com/q/5683/87) в Ethereum Stack Exchange? – default

ответ

3

Вы можете создать переменную None, чтобы использовать его в качестве NULL:

uint80 constant None = uint80(0); 
2

В солидности каждая переменная устанавливается в 0 по умолчанию.

Вы должны думать о mappings, поскольку все возможные комбинации установлены на 0 по умолчанию.

В вашем конкретном случае я хотел бы использовать следующее:

if (buyers[msg.sender].amount == 0)