Solidity

字元串的零值是多少?

  • January 19, 2018

如何驗證映射內的字元串或僅具有字元串屬性的列舉是否已初始化?

根據文件,這意味著檢查映射的元素是否為 0 值,在談論字元串時我不清楚。

contract C {
   mapping (address => string) m1;
   mapping (address => StringStruct) m2;

   struct StringStruct {
       string someString; // Always defined when initialising this struct
       // There could be other string properties here...
   }

   function amIInBothMappings() returns (bool) {
        // Check that both m1[msg.sender] and m2[msg.sender].someString are non-0
   }
}

在範例中:實現在映射 m1 和 m2 中未初始化的amIInBothMappings檢查的最佳方法是什麼?msg.sender

一種方法是檢查字元串的長度:

if (bytes(m1[msg.sender]).length != 0 && bytes(m2[msg.sender].someString).length != 0)
   // do your thing

請參閱我在此處發布的答案

另一種方法是比較字元串的 sha3 雜湊值

if (sha3(myVariable) != sha3("")) {
// is not empty string
}

但是,這種方法可能效率較低。

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