基礎資料型別 (Elementary Data Type)
螞蟻區塊鏈合約平台基本支援 Solidity 所有的資料類型,但是對於一些使用者編寫的合約的輸入參數類型並沒有完全的支援,比如參數輸入中二維數組的輸入。同時,螞蟻區塊鏈合約平台提供了 identity 類型來標註每一個使用者的身份,不支援原生 Solidity 中的 address 類型,identity 的長度為 32 位元組。
平台建議使用資料類型樣本如下所示:
資料類型 | 參考範例 | 合約內部是否支援 | 輸入參數是否支援 |
bool | bool a = true | 是 | 是 |
uint | uint a = 1 | 是 | 是 |
uint8 ~ uint256 | uint8 a = 1 | 是 | 是 |
int | int a = 1 | 是 | 是 |
int8 ~ int256 | int8 a = 1 | 是 | 是 |
bytes | bytes a = “test” | 是 | 是 |
bytes1 ~ bytes32 | bytes1 a = “a” | 是 | 是 |
string | string a = “test” | 是 | 是 |
identity | identity id = 0x1234567890123456789012345678901234567890123456789012345678901234567890000 | 是 | 是 |
int[] | int256[] a = [1,2,3,4,5] | 是 | 是 |
uint[] | uint256[] a = [1,2,3,4,5] | 是 | 是 |
bytes1[] ~ bytes32[] | bytes4[] asd = new bytes4; | 是 | 是 |
string[] | string[] a = [“adbc”,”dg”] | 是 | 否 |
enum | enum a {a,b,c} | 是 | 否 |
struct | struct a { string name;} | 是 | 否 |
合約內部使用:指在合約內部的使。
輸入參數:指在用戶端調用函數方法時傳入參數的類型。
例如在 前述的積分管理合約 的發放方法中,identity 類型和 int256 類型屬於輸入參數的類型,在合約內部和輸入參數都支援。
function Issue(identity account, int256 value)但是,對於使用者積分和賬戶 ID 對應的宣告類型 mapping,在合約內部使用時是可以的,但是無法作為函數的傳入類型,如下所示:
function example(mapping(identity=>int256) map) // 錯誤,不支援 mapping 作為輸入參數類型其他類型
除了上述資料類型外,Solidity 還支援其他類型,比如:
映射、字典(mapping)
結構體(struct)
時間單位(seconds,minutes,hours,days,weeks,years)
更多資訊,可查看 Solidity 官網關於類型的文檔(英文)。