2016-06-16 11 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); 

} 

구매자가 구매자 매핑에 기록되지 않은 경우 buyerNum ++; 하지만 구매자가 매핑에 있는지 여부를 알려주는 방법은 없습니다단단한 것 같은 null이 있습니까

+0

아마 같은 ([변수 또는 배열이 설정된 경우 또는 내가 확인할 수있는 방법 빈 또는 null] http://ethereum.stackexchange.com/a/2134/87), [구조의 0 값 확인] (http://ethereum.stackexchange.com/q/2502/87) 또는 [문자열에 대한 0 값은 무엇입니까?] (http : // ethereum. stackexchange.com/q/5683/87)에서 Ethereum Stack Exchange를 사용하십니까? – default

답변

4

null은 견고합니다.

그냥 주소의 길이를 확인 :

if(buyers[msg.sender].length == 0){ 
    // do your thing 
} 

this answer on ethereum stack exchange를 참조하십시오. 당신은 NULL로 사용할 수 없음 변수를 만들 수

3

:

uint80 constant None = uint80(0); 
2

은 견고 함에서 모든 변수는 기본적으로 0로 설정됩니다.

mappings가능하면 모두 조합을 0으로 설정해야합니다. 특정 경우

내가 사용하는 것이 다음

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