Cell
是 TON 区块链中表示数据的低级基元。 单元由 1023 位数据组成,最多可 4 引用另一个单元。 它们是只读的、不可变的,并且不能循环引用。
Builder
是一个不可变的基元,用于构建单元格;Slice
是一个可变的基元,用于解析单元格。
beginCell
创建一个新的空Builder
。
使用示例
空单元格
创建并返回空 [单元格
][单元格](不含数据和引用)。 别名为 beginCell().endCell()
。
使用示例
空切片
创建并返回空 [片
][片](不含数据和引用)。 与 emptyCell().asSlice()
同名。
使用示例
Cell.beginParse
[单元格
][单元格]的扩展函数。
打开[单元格
][单元格]进行解析,并以[切片
][切片]的形式返回。
使用示例
单元格哈希值
[单元格
][单元格]的扩展函数。
计算并返回给定[单元格
][单元格]的[标准单元格
表示][st-repr]的SHA-256哈希值的Int
值。
使用示例
Cell.asSlice
[单元格
][单元格]的扩展函数。
将单元格转换为Slice
并返回。 self.beginParse()
的别名。
使用示例
Builder.endCell
[生成器
][生成器]的扩展函数。
将 [构造器
][构造器] 转换为普通的 [单元格
][单元格]。
使用示例
Builder.storeUint
[生成器
][生成器]的扩展函数。
将 0≤bits≤256 的无符号 bits
位 value
存储到 Builder
的副本中。返回该副本。
试图存储负 value
或提供不足或超界 bits
数时,会出现 退出代码 5 异常:“整数超出预期范围”。
使用示例
Builder.storeInt
[生成器
][生成器]的扩展函数。
将0≤ bits
≤257的有符号bits
-位值
存储到builder
的副本中。 返回该副本。
试图提供一个不足或超出范围的比特
数时,会出现退出代码5的异常:整数超出预期范围”。
使用示例
Builder.storeBool
[生成器
][生成器]的扩展函数。
将Bool
value
存储到Builder
的副本中。 如果 value
是 true
,则写入 1 作为单个位,否则写入 0。 返回 [生成器
][生成器] 的副本。
使用示例
Builder.storeSlice
[生成器
][生成器]的扩展函数。
将slice
cell
存储到builder
的副本中。 返回该副本。
使用示例
Builder.storeCoins
[生成器
][生成器]的扩展函数。
存储(序列化)一个范围为 0…2120−1 的无符号 Int
value
到 Builder
的副本中。value
的序列化由 4 位无符号大端整数 l 组成,它是最小的整数 l≥0,使得 value<28l,然后是 value
的 8l 位无符号大端表示。返回 Builder
的副本。
试图存储一个超出范围的值
时,会出现退出代码5的异常:超出预期范围的整数
。
这是最常见的[纳米通币]存储方式(/book/integers#nanotoncoin)。
使用示例
Builder.storeAddress
[生成器
][生成器]的扩展函数。
将地址存储在 [生成器
][生成器] 的副本中。 返回该副本。
使用示例
Builder.storeRef
[生成器
][生成器]的扩展函数。
将引用 cell
存储到Builder
的副本中。 返回该副本。
由于单个 [单元格
][单元格] 最多可存储 4 引用,如果尝试存储更多引用,则会出现退出代码 8异常:单元格溢出”。
使用示例
建造者参考资料
[生成器
][生成器]的扩展函数。
以 Int
形式返回已存储在 [构造器
][构造器] 中的单元格引用的数目。
使用示例
构建器位
[生成器
][生成器]的扩展函数。
以Int
形式返回已存储在builder
中的数据位数。
使用示例
Builder.asSlice
[生成器
][生成器]的扩展函数。
将builder
转换为slice
并返回。 别名为 self.endCell().beginParse()
。
使用示例
Builder.asCell
[生成器
][生成器]的扩展函数。
将Builder
转换为Cell
并返回。 别名为 self.endCell()
。
使用示例
Slice.loadUint
[切片
][切片]的扩展突变函数。
从 Slice
中加载并返回一个无符号的 l
位 Int
,条件是 0≤ l
≤256。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试加载的数据超过 [片
][片] 包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.preloadUint
[切片
][切片]的扩展函数。
为 0≤ l
≤256 从 Slice
中预载并返回一个无符号的 l
位 Int
。 不会修改 [切片
][切片]。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试预载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9异常:单元格下溢”。
使用示例
Slice.loadInt
[切片
][切片]的扩展突变函数。
从 Slice
中加载并返回一个有符号的 l
位 Int
,值为 0≤ l
≤257。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.preloadInt
[切片
][切片]的扩展函数。
为 0≤ l
≤257 从 Slice
中预载并返回一个有符号的 l
位 Int
。 不会修改 [切片
][切片]。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试预载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9异常:单元格下溢”。
使用示例
Slice.loadBits
[切片
][切片]的扩展突变函数。
从 [片
][片] 中加载 0≤ l
≤1023 位,并作为单独的 [片
][片] 返回。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.preloadBits
[切片
][切片]的扩展函数。
从 [片
][片] 中预载 0≤ l
≤1023 位,并将其作为单独的 [片
][片] 返回。 不修改原始 [切片
][切片]。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试预载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9异常:单元格下溢”。
使用示例
Slice.skipBits
[片
][片]的扩展突变函数。
从 [片
][片] 中加载除第一个 0 ≤‘l‘≤ 1023$ 位以外的所有位。
试图指定一个超出范围的 l
值时,会出现 exit code 5异常:超出预期范围的整数。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.loadBool
[片
][片]的扩展突变函数。
从Slice
加载单个位并返回Bool
值。 如果加载的位等于 1,则读取 true
,否则读取 false
。
当 Bool
slice
不包含它时,尝试加载此类 Bool
会产生异常,退出代码 8:单元格溢出”。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.loadCoins
[切片
][切片]的扩展突变函数。
加载并返回序列化的一个范围为 0...2120−1 的无符号 Int
值,来自 [片
][片]。该值通常代表以纳吨币为单位的金额。
当 Slice
中不包含Int
时,尝试加载此类Int
会产生异常,退出代码为 8:“单元格溢出”。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:“单元格下溢”。
使用示例
Slice.loadAddress
Slice
的扩展突变函数。
从Slice
加载并返回一个[Address
][address]。
当Slice
不包含该地址时,尝试加载该[Address
][address]会产生异常,退出代码 8:“单元格溢出”。
尝试加载的数据超过 Slice
所包含的数据时,会出现 退出代码 9 异常:“单元格下溢”。
使用示例
Slice.loadRef
[切片
][切片]的扩展突变函数。
从 [切片
][切片] 中加载下一个引用作为 [单元格
][单元格]。
当 [切片
][切片]不包含该引用时,尝试加载该引用会产生异常,退出代码 8:“单元格溢出”。
尝试加载的数据超过 [片
][片] 所包含的数据时,会出现 exit code 9 异常:单元格下溢”。
使用示例
Slice.refs
[切片
][切片]的扩展函数。
以 Int
形式返回 [片
][片] 中引用的个数。
使用示例
Slice.bits
[切片
][切片]的扩展函数。
以 Int
形式返回 [片
][片] 中的数据位数。
使用示例
Slice.empty
[切片
][切片]的扩展函数。
检查 [片
][片] 是否为空(即不包含数据位和单元格引用)。 如果为空,则返回 true
,否则返回 false
。
使用示例
Slice.dataEmpty
[切片
][切片]的扩展函数。
检查 [片
][片] 是否没有数据位。 如果没有数据,则返回 true
,否则返回 false
。
使用示例
Slice.refsEmpty
[切片
][切片]的扩展函数。
检查 Slice
是否没有引用。 如果没有引用,则返回 true
,否则返回 false
。
使用示例
Slice.endParse
[切片
][切片]的扩展函数。
检查 [片
][片] 是否为空(即不包含数据位和单元格引用)。 如果不是,则抛出异常退出代码 9:单元格下溢。
使用示例
Slice.hash
[切片
][切片]的扩展函数。
计算并返回给定Slice
的[标准Cell
表示][st-repr]的SHA-256哈希值的Int
值。
使用示例
Slice.asCell
[切片
][切片]的扩展函数。
将 Slice
转换为 Cell
并返回。 别名为 beginCell().storeSlice(self).endCell()
。
使用示例
地址.asSlice
地址
的扩展函数。
将地址
转换为[片
][片]并返回。 别名为 beginCell().storeAddress(self).asSlice()
。
使用示例
Struct.toCell
任何结构类型 Struct的扩展函数。
将 Struct 转换为 [单元格
][单元格]并返回。
使用示例
Struct.fromCell
任何结构类型 Struct的扩展函数。
将 [单元格
][单元格] 转换为指定的 结构体,并返回该 结构体。
试图传递布局与指定 Struct 不同的 [单元格
][单元格],或加载的数据超过 [单元格
][单元格] 所包含的数据时,会出现 exit code 9异常:单元格下溢”。
使用示例
Struct.fromSlice
任何结构类型 Struct的扩展函数。
将 片
转换为指定的 Struct,并返回该 Struct。
尝试传递布局与指定 结构不同的 [片
][片],或加载比 [片
][片] 包含的数据更多的数据时,会出现退出代码 9异常:单元下溢”。
使用示例
Message.toCell
任何报文类型 [报文][信息] 的扩展函数。
将信息转换为[单元格
][单元格]并返回。
使用示例
Message.fromCell
任何报文类型 [报文][信息] 的扩展函数。
将 [单元格
][单元格] 转换为指定的 [信息][消息],并返回该 [信息][消息]。
尝试传递布局与指定信息不同的[单元格
][单元格],或加载的数据超过[单元格
][单元格]所包含的数据时,会出现退出代码 9的异常:单元格下溢”。
使用示例
Message.fromSlice
任何报文类型 [报文][信息] 的扩展函数。
将 [片
][片] 转换为指定的 [信息][消息],并返回该 [信息][消息]。
试图传递布局不同于指定[信息][消息]的[片
][片],或加载的数据多于[片
][片]所包含的数据时,会出现退出代码 9的异常:单元下溢”。
使用示例