Solidity

如何訪問庫中的映射?

  • January 16, 2017
library Lib{
   struct Data {
       mapping (uint => uint) a;
   }

   function inc(Data self) internal{
       self.a[0] =+1;
   }
}
contract Example{

   address recipient = 0x0000cafebabe;

   Lib.Data data;

   function send(){
       Lib.inc(data);
   }
}

導致錯誤

7:9:錯誤:成員“a”在儲存之外的結構數據記憶體中不可用。
自我.a[0] =+1;
^----^

將您的程式碼更改如下

function inc(Data storage self) internal{
       self.a[0]=+1;
   }

注意storage它的部分。請理解變數內部類型記憶體類型的概念

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