Solidity是靜態(tài)類型語言,編譯時需明確變量的類型躲舌,類型分類有值類型與引用類型
值類型(Value Type)
值類型在傳值時而账,總是值傳遞1。比如在函數(shù)傳參數(shù)時留拾,或進行變量賦值時戳晌。值類型包括有:
。布爾(Booleans)
间驮。整型(Integer)
。地址(Address)
马昨。定長字節(jié)數(shù)組(fixed byte arrays)
竞帽。小數(shù)
。16進制常量
鸿捧。字符串(String literals)
屹篓。枚舉類型(Enums)
。函數(shù)(Function Types)
布爾
匙奴。bool: 取值為常量值true和false.
堆巧。支持!邏輯非,&&邏輯與,|| 邏輯或谍肤,== 等于和啦租!= 不等于運算符
。支持短路與荒揣,短路或運算
整型
篷角。支持有符號整數(shù)和無符號整數(shù),int和uint
系任。整數(shù)位數(shù)可以指定恳蹲,從8到256位,步長為8俩滥,從int8到int256嘉蕾,uint8到uint256,比較特別
霜旧。int默認表示int256错忱,uint默認表示uint256
。為了節(jié)省空間考慮颁糟,應在開發(fā)中選擇適合的大小
航背。除法結(jié)果會被截斷,使用變量棱貌,1除以4會等于0
玖媚。左移位a<> b相當于執(zhí)行a除以2的y次方
。除以零婚脱,對零取模今魔,位移負數(shù)位會拋異常
地址Address
。代表一個帳戶障贸。帳戶可以是普通的個人帳戶错森,也可以是包含代碼的合約帳戶
。地址長度為20字節(jié)篮洁,一字節(jié)等于8位涩维,一共160位
。地址為0xF055775eBD516e7419ae486C1d50C682d4170645袁波,0x代表十六進制瓦阐,把0x以后的數(shù)據(jù)轉(zhuǎn)二進制后是160位
。地址是所有合約的基礎(chǔ)篷牌,合約繼承地址
睡蟋。從地址字符串,可以獲得代碼來進行調(diào)用
枷颊。如果地址不是合約賬戶戳杀,是普通帳戶時该面,就沒有合約賬戶的功能了
。地址有屬性:balance信卡,所有合約都繼承了地址隔缀,所以使用this.balance可以查到合約余額
。函數(shù):send()坐求,call()蚕泽,delegatecall(),callcode()桥嗤,調(diào)用合約代碼
须妻。一般不直接使用以上函數(shù),最好封裝后再用泛领,由于可使用任意參數(shù)荒吏,類型安全不能保證
。調(diào)用合約方法時的發(fā)起人是msg.sender
渊鞋。this在合約中代表當前合約地址
绰更。合約地址支持大小比較運算符
。Wei是最小單位锡宋,一個以太幣ether儡湾,等于10的18次方Wei
定長字節(jié)數(shù)組
。定義的方式是bytes和N执俩,其中N可取從1到32中的任意整數(shù)
徐钠。定義新變量時可以使用整數(shù)字面量,或字符串字面量
役首。支持比較運算符和位運算符
尝丐。可使用序號訪問某個字節(jié)衡奥,序號可取值0到N
爹袁。屬性.length可查看其長度
小數(shù)
。由 . 組成矮固,. 的一邊必須要有數(shù)字失息,比如: 1.2 ,1.或是.2
档址。支持科學計數(shù)法盹兢,基數(shù)可以有小數(shù)部分,但是指數(shù)部分不可以辰晕。比如:1e2, -1e2, 1e-2, 1.2e3
蛤迎。如計算結(jié)果是小數(shù)确虱,自動匹配合適的大小含友,盡量包含更多的小數(shù)位
16進制常量
。以hex開頭,后面是單雙引號窘问,內(nèi)容是十六進制字符串辆童,如hex"001122ff"
。行為和字符串常量一樣惠赫,并且有同樣的限制
把鉴。可隱式的轉(zhuǎn)為bytes
字符串
儿咱。用雙引號或是單引號庭砍,如"abc" , 'xyz'
枚舉
混埠。是一種用戶自定義類型
怠缸。至少有一名成員
∏埽可顯示的與整數(shù)進行轉(zhuǎn)換揭北,運行時檢查數(shù)值范圍,如果不匹配吏颖,會拋異常
函數(shù)
搔体。f(),內(nèi)部調(diào)用(internal調(diào)用)
半醉。this.f()疚俱,a.f()是外部調(diào)用(external調(diào)用),this和其他編程語言的語義不一樣奉呛,這里a是合約實例
计螺。函數(shù)調(diào)用是消息調(diào)用,而不是直接的指令
瞧壮。在合約的構(gòu)造器中登馒,不能使用this調(diào)用函數(shù),因為當前合約還沒有創(chuàng)建完成
咆槽。函數(shù)的入?yún)⒍x與變量定義類似
陈轿。未使用到的參數(shù)變量名可省略
∏胤蓿可使用命名參數(shù)麦射,參數(shù)名和參數(shù)值作為鍵值對放入大括號{},順序任意
灯谣。返回值的定義與參數(shù)類似潜秋,跟在returns關(guān)鍵字后即可
。返回參數(shù)的變量名定義可省略胎许,但是不能部分省略和部分不省略
峻呛。return要返回所有定義
罗售。一個函數(shù)中返回多個結(jié)果,用圓括號括起來
钩述。返回參數(shù)會被初始化為0