阅读(1448) (12)

类型信息

2022-05-12 11:09:53 更新

该表达式type(X)可用于检索有关类型的信息 X。目前,对该功能的支持有限(X可以是合约或整数类型),但将来可能会扩展。

以下属性可用于合同类型C:

type(C).name

合同的名称。

type(C).creationCode

包含合约创建字节码的内存字节数组。这可以在内联汇编中用于构建自定义创建例程,尤其是通过使用create2操作码。此属性不能在合约本身或任何派生合约中访问。它导致字节码包含在调用站点的字节码中,因此不可能进行这样的循环引用。

type(C).runtimeCode

包含合约运行时字节码的内存字节数组。这是通常由 的构造函数部署的代码C。如果C有一个使用内联汇编的构造函数,这可能与实际部署的字节码不同。另请注意,库在部署时会修改其运行时字节码以防止常规调用。与 相同的限制.creationCode也适用于此属性。

除了上述属性之外,接口类型还可以使用以下属性I:

type(I).interfaceId

bytes4包含给定接口的EIP-165 接口标识符的值I。此标识符被定义为XOR接口本身内定义的所有函数选择器中的一个 - 不包括所有继承的函数。

以下属性可用于整数类型T:

type(T).min

type 可表示的最小值T

type(T).max

type 可表示的最大值T