Skip to content

Latest commit

 

History

History
110 lines (84 loc) · 4.08 KB

Yolanda.md

File metadata and controls

110 lines (84 loc) · 4.08 KB
timezone
Asia/Shanghai

请在上边的 timezone 添加你的当地时区,这会有助于你的打卡状态的自动化更新,如果没有添加,默认为北京时间 UTC+8 时区


YourName

  1. 自我介绍 有些許DeFi相關經驗,也學過wtf的solidity課程,這次決定參與共學,並藉此機會產出相關的學習筆記。

  2. 你认为你会完成本次残酷学习吗? 會!

Notes

2024.09.23

  1. 完成了"hello web3!" -第一行:license -第二行:版本,會使用“^”表示 -第三行後是合約內容
  2. Solidity的變量類型包括三種: -value type:布爾、整型 -reference type:數組 -mapping type: -enum

2024.09.24

  1. 聲明函數可見性的關鍵字有4種:public, private, external, internal
  2. 聲明函數所擁有的權限:pure(不能讀寫鏈上狀態的變量)、view(能讀取但不能寫入狀態變量)、默認寫法(自由讀取和寫入狀態變量)
  3. 引用pure和view:節省gas、控制函數權限

2024.09.25

  1. 函數輸出: -returns加在函數名後面,聲明返回的變量類型和變量名 -return用在函數主體,返回指定的變量
  2. 命名式返回
  3. 解構式返回: -讀取所有返回值(聲明變量),要賦值的變量用“,”隔開 -讀取部分返回值:不讀取的部分留白

2024.09.26

  1. 數據位置:storage、memory、calldata
  2. storage:狀態變量默認,存在鏈上
  3. memory:函數中的參數、臨時變量使用,存在內存、不上鏈
  4. calldata:不能被修改,存在內存、不上鏈
  5. 狀態變量:存在鏈上的變量,消耗較多gas
  6. 局部變量:函數執行過程中有效的變量,不上鏈,gas消耗小
  7. 全局變量:在函數內不聲明直接使用,常用:msg.sender、block.number、msg.data

2024.09.27

  1. 數組是常用的一種變量類型,分為固定長度數組、可變長度數組
  2. 固定長度數組:T[k],T是元素的類型、k是長度
  3. 可變長度數組:T[ ],T是元素類型
  4. 注意bytes是特例,類似動態數組類型,但聲明時不用加上[]

2024.09.28

  1. 創建數組的規則:memory型的動態數組,可用new操作符創鍵,需聲明長度(聲明後的長度不能改變)
  2. 數組字(array literal):eg.[1,2,3],逗號分隔、方括號包裹、每一個元素的類型是以第一個元素為準;如果一個值沒有指定類型的話,默認會指定為最小單位的類型
  3. 動態的memory數組不能用固定長度的memory數組或者數組字面量賦值
  4. 數組: -length:存儲類型memory存儲數組,長度在創建後固定 -push():用在數組最後添加一個0元素,並返回該元素的引用 -push(x):用在數組最後添加一個值為x的元素 -pop():用在移除數組的最後一個元素 5.結構體賦值: -在函數中創建一個storage的struct引用 -直接對結構體的成員變量賦值 -用類似函數的方式初始化一個結構體,用於整體賦值 -用鍵值對(key-value pair)的形式構造結構體,並整體賦值

2024.09.29

  1. 映射(mapping):在映射中,透過鍵(key),查詢對應的值(value)
  2. _KeyType只能選擇Solidity內置的值類型,uint、address
  3. _ValueType可以使用自定義類型

2024.09.30

  1. 缺省值(default value):已聲明但尚未賦值的變量在運行時會獲得初始值
  2. 可以為變量聲明public,調用getter函數獲取其值,驗證各種類型初始值的正確性
  3. 映射結構、結構體、數組

2024.10.01

  1. constant(常量)變量須在聲明時初始化,之後再也不能改變
  2. 用immutable(不變量)聲明的變量可在聲明時初始化,或在合約構造時初始化

2024.10.02

  1. 控制流
  2. if-else條件語句
  3. for循環
  4. while循環
  5. do-while循環
  6. 三元運算符
  7. 插入排序

2024.10.03

  1. 構造函數:每個合約定義一個,在部署合約時定義一次(在不同版本的語法不一致)
  2. 修飾器是用來聲明函數擁有的特性,減少代碼冗余