亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

巴青县| 浪卡子县| 三门县| 通河县| 七台河市| 柳林县| 山西省| 怀柔区| 海原县| 城口县| 中山市| 芜湖市| 彭水| 屯昌县| 渑池县| 房山区| 绥芬河市| 梁河县| 兰坪| 普陀区| 宝丰县| 盘山县| 江西省| 乐陵市| 鹤壁市| 沾化县| 石阡县| 紫金县| 湖南省| 靖安县| 泰安市| 含山县| 邢台县| 兴海县| 昌江| 敦煌市| 永善县| 巴东县| 丰镇市| 洛浦县| 江阴市|