Solidity

使用字元串類型作為映射鍵時出錯

  • November 6, 2017

以下程式碼無法編譯,因為編譯器需要一個固定大小類型的映射鍵才能為公共映射創建訪問器。我在這裡使用字元串類型。我的字元串是 24 字節的十六進製字元串。

我的問題:

  • 您如何將字元串轉換為可用作映射鍵的任何固定大小的類型?
  • 您對如何使程式碼更高效有什麼建議嗎?

pragma solidity ^0.4.6;
contract C {
   struct User {
        uint balance;
   }
   mapping (string => User) public accounts;
   function newUser(string id, uint balance) {
        accounts[id] = User(balance);
   }
}

**錯誤:**未實現的功能:使用動態大小的鍵進行映射的訪問器尚未實現。

我建議使用 bytesN 而不是字元串:

pragma solidity ^0.4.6;
contract C {
   struct User {
        uint balance;
   }
   mapping (bytes24 => User) public accounts;
   function newUser(bytes24 id, uint balance) {
        accounts[id] = User(balance);
   }
}

您還可以將字節轉換為字元串,看看:如何將字節 32 轉換為字元串

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