Solidity語言學習筆記————14、左值運算子
左值運算子(Operators Involving LValues)
如果a
是一個左值(LValues),即一個可以賦值給它的變數,可以使用以下的運算子:
a += e
相當於a = a + e
。 運算子- =
,* =
,/ =
,% =
,| =
,& =
和^ =
都有類似的定義。a++
和a--
相當於a+ = 1
/a - = 1
,--a
和++a
對a
有與上一條相同的效果,但是等值發生改變後才返回運算結果。
刪除(delete)
delete a
將對應型別的初始值賦值給a
,即相當於a= 0
。- 對於靜態陣列使用
delete
時,是將陣列內所有元素置為初值。而對於動態陣列時,則是將長度置為0。 - 對於結構體使用
delete
會將其中的所有成員變數一一置為初值。 delete
對mapping
沒有效果(因為對映的金鑰可以是任意的,並且通常是未知的)。因此,如果delete
一個struct
,將重置所有不是對映的mapping
,也會遞迴到成員中,除非它們是對映。不過,單獨的鍵和鍵對應的值可以被delete
。
注意,delete a
的行為非常類似於對a
賦值,即a中儲存了一個新的物件:
pragma solidity ^0.4.0;
contract DeleteExample {
uint data;
uint[] dataArray;
function f() public {
uint x = data;
delete x; // sets x to 0, does not affect data
delete data; // sets data to 0, does not affect x which still holds a copy
uint[] storage y = dataArray;
delete dataArray; // this sets dataArray.length to zero, but as uint[] is a complex object, also
// y is affected which is an alias to the storage object
// On the other hand: "delete y" is not valid, as assignments to local variables
// referencing storage objects can only be made from existing storage objects.
}
}
相關文章
- Solidity語言學習筆記————9、左值運算子Solid筆記
- Solidity語言學習筆記————8、運算子優先順序Solid筆記
- C語言學習筆記--C運算子C語言筆記
- Solidity語言學習筆記————1、初識Solidity語言Solid筆記
- Solidity語言學習筆記————4、常量Solid筆記
- Solidity語言學習筆記————36、 庫Solid筆記
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Solidity語言學習筆記————23、函式呼叫和賦值Solid筆記函式賦值
- Solidity語言學習筆記————14、動態位元組陣列Solid筆記陣列
- Solidity語言學習筆記————12、陣列Solid筆記陣列
- Solidity語言學習筆記————33、事件(Events)Solid筆記事件
- Solidity語言學習筆記————37、Using forSolid筆記
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- Go語言學習(7) - 運算子Go
- Solidity語言學習筆記————42、提示和技巧Solid筆記
- Solidity語言學習筆記————43、安全考量Solid筆記
- Solidity語言學習筆記————32、建立合約Solid筆記
- Solidity語言學習筆記————28、純函式Solid筆記函式
- Solidity語言學習筆記————26、回退函式Solid筆記函式
- Java學習筆記--運算子Java筆記
- Solidity語言學習筆記————41、記憶體佈局Solid筆記記憶體
- 《手把手教你學C語言》學習筆記(8)--- 運算子和表示式C語言筆記
- Solidity語言學習筆記————10、布林型、整型Solid筆記
- Solidity語言學習筆記————3、Remix的基本使用Solid筆記REM
- Solidity語言學習筆記————15、結構體StructSolid筆記結構體Struct
- Solidity語言學習筆記————18、字串和函式Solid筆記字串函式
- Solidity語言學習筆記————17、原始檔對映Solid筆記
- Solidity語言學習筆記————5、全域性變數Solid筆記變數
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- Solidity語言學習筆記————39、獨立彙編Solid筆記
- Solidity語言學習筆記————25、作用域和宣告Solid筆記
- Solidity語言學習筆記————27、檢視函式Solid筆記函式
- Solidity語言學習筆記————30、函式過載Solid筆記函式
- C語言學習筆記——位運算C語言筆記
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- Solidity語言學習筆記————35、抽象合約和介面Solid筆記抽象
- Solidity語言學習筆記————26、Assert, Require, Revert 和 ExceptionsSolid筆記UIException
- Solidity語言學習筆記————22、可見性和GettersSolid筆記