Solidity

結構的預設值

  • October 12, 2017

在 Solidity 中考慮以下合約:

pragma solidity ^0.4.2;

contract Registry {
   struct Name {
       string first;
       string last;
   }

   mapping(address => Name) reg;

   function newName(string first, string last) {
       address sender = msg.sender;

       if(reg[sender] != 0) {
           throw;
       }

       reg[sender].first = first;
       reg[sender].last = last;
   }
}

在上面的if語句中,這是不正確的,我想檢查結構是否Name已定義,或者是否仍處於預設值,所有欄位都初始化為零。有語言操作員來做嗎?

我會去:

if (reg[sender].first != "" || reg[sender].last != "") {
扔;
}

沒有運算符,但您可以檢查兩個字元串的長度是否為零:

if (bytes(reg[sender].first).length != 0 || bytes(reg[sender].last).length != 0) { throw; }

注意:使用 ||

有關的:

引用自:https://ethereum.stackexchange.com/questions/11453