中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solidity智能合約[41]-structdeep

發布時間:2020-07-01 22:38:45 來源:網絡 閱讀:266 作者:jonson_jackson 欄目:開發技術

結構體中的mapping

###定義時,不用初始化mapping
1、結構體中的變量,在定義的時候是不能缺省的,但是結構體中的mapping映射除外。
2、在memory中的結構體變量s是不能夠操作其中mapping映射。這是由于mapping映射只能夠存儲在storage空間中

1
2
3
4
5
6
7
struct student{
      uint grade;
      string name;
      mapping(uint=>string) map;
  }
student memory s = student(100,"jonson"); //初始化不用管mapping
// s.map[2] = "alice";錯誤,mapping映射只能夠存儲在storage空間中

3、要想操作結構體中的mapping映射,那么必須要將結構體定義為狀態變量。
如下面的例子中,定義了狀態變量 student stu。因此可以操作其mapping映射。

下例中的變量guy在棧中,對于guy的操作視同于對于狀態變量stu的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
contract structdeep{


   struct student{
       uint grade;
       string name;
       mapping(uint=>string) map;
   }

   student stu;


   function init() public view returns(string){
       student memory s = student(100,"jonson");

       //將memory中 結構體s的值賦值給狀態變量中的stu。
       stu =  s;
       //操作mapping映射
      stu.map[2] = "alice";

     //引用
     student storage guy =  stu;
     guy.map[2] = "bob";


     return stu.map[2];

   }

帶參數結構體與memory

函數參數為結構體時,由于函數參數是在memory的空間中,因此默認時memory屬性。必須要用memroy來接受,不能使用storage類型來接受。

1
2
3
4
5
6
7
8
9

struct student{
   uint grade;
   string name;
}

function structParam(student s) internal{
   student memory guy =  s;
}

錯誤寫法:

1
2
3
4
5
6
7
8
9

struct student{
   uint grade;
   string name;
}

function structParam(student s) internal{
   student  guy =  s;
}

錯誤寫法2:

1
2
3
4
5
6
7
8
struct student{
   uint grade;
   string name;
}

function structParam(student s) internal{
   student storage guy =  s;
}

函數參數為結構體引用

如果希望使用到storage來接受,那么需要強制為參數加上storage屬性。這時,傳遞的參數必須是狀態變量。

1
2
3
4
5
6
7
8
9
10
function structParam2(student storage s) internal{
   student storage guy =  s;
   guy.grade = 1000;
}

function call() public returns(uint){

   structParam2(stu);

   return stu.grade;
  • 本文鏈接: https://dreamerjonson.com/2018/11/23/solidity-41-structdeep/

  • 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!

solidity智能合約[41]-structdeep

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

观塘区| 天柱县| 澄迈县| 丘北县| 嵊州市| 梁山县| 社会| 三河市| 大洼县| 泸州市| 小金县| 德昌县| 泰州市| 图木舒克市| 措美县| 南阳市| 万荣县| 若羌县| 鹤峰县| 阿图什市| 积石山| 安塞县| 宜阳县| 拜城县| 沈丘县| 莫力| 和田县| 阜南县| 应城市| 垫江县| 桓仁| 玛纳斯县| 河津市| 根河市| 长子县| 元朗区| 新和县| 汕尾市| 建宁县| 建始县| 门头沟区|