Scilla定义了32位,64位和128位的有符号和无符号整数类型。计划在未来支持256位整数。可以使用关键字指定这些整数类型IntX
,UintX
其中 X
可以是32,64或128.例如,可以将128位的无符号整数指定为Uint128
。
注意:与货币相关的价值(如转账金额或账户余额)是
Uint128
。
以下是整数类型的内置用法,每个方法采用两个整数IntX
/ UintX
(参数需为相同类型)作为参数。
eq i1 i2
:判断i1
是否等于i2
,返回Bool
。add i1 i2
:i1
与i2
之和。返回同一类型的整数。sub i1 i2
:i1
与i2
之差。返回同一类型的整数。mul i1 i2
:i1
与i2
之积。返回同一类型的整数。lt i1 i2
:判断i1
是否比i2
小。返回Bool
。
与大多数语言一样,Scilla中的String
用双引号括起来的字符表示。使用String
来声明变量类型。
以下是String
的内置用法:
eq s1 s2
:String s1
是否等于String s2
。返回Bool
。concat s1 s2
:将String s1
与String s2
合并。返回String
。substr s1 i1 i2
:在字符串s1
中,自位置Uint32 i1
开始,提取长度为Uint32 i2
的字符串。返回String
。
Scilla内置了对Hash
的支持。Hash
文字以0x
字母开头并具有64个十六进制字符(32个字节)。 Hash
指定此类型的变量。
以下Hash
操作是内置用法。在下面的描述中,Any
可以是IntX
,UintX
,String
,Address
或Hash
等类型。
eq h1 h2
:Hash h1
是否等于Hash h2
。返回Bool
。dist h1 h2
:Hash h1
和Hash h2
之间的距离。返回Uint128
。未来会支持Uint256
,可直接返回Uint256
。sha256 x
:值为x
的SHA256哈希值。返回Hash
。
Map
即为映射类型值。“键”含IntX
, UintX
,String
,Hash
或Address
等类型。“值”可以是任何类型。
put m k v
:在映射m
中插入键k
和值v
。除了之前的键/值对外,还返回包含最新插入的键/值的新映射。get m k
:在映射m
中,对于键k
,返回关联值v
(值为Option类型,可查阅后文介绍)。如果k
不在映射m
中,则返回值为None
。remove m k
:从映射m
中删除键k
及其关联值。返回一个更新后的映射。contains m k
:键k
及其关联值是否存在于映射m
中。返回Bool
。
Address
数据类型可用来表示“地址”,必须都用Address
声明。Address
皆以0x
为开头,长度为40个十六进制字符(相当于20个字节)。
以下Address
操作是内置用法:
eq a1 a2
:Address a1
是否等于Adress a2
。返回Bool
。
块号是Scilla中的一种专用数据类型。此变量类型用BNum
来声明,BNum
是指以block
为前缀的数字(例如block 101
)。
以下BNum
操作是内置用法:
eq b1 b2
:BNum b1
是否等于BNum b2
。返回Bool
。blt b1 b2
:BNum b1
是否小于BNum b2
。返回Bool
。badd b1 i1
:将UintX i1
添加到BNum b1
。返回BNum
。