能力:Store
现在你已经了解了通过key
能力启用的顶层存储函数,我们可以讨论列表中的最后一个能力 - store
。
定义
store
是一种特殊的能力,允许将类型存储在对象中。该能力是字段可以在具有key
能力的结构体中使用的必需条件。换句话说,store
能力允许值被包装在对象中。
store
能力还放宽了转移操作的限制。我们在受限和公共转移部分中会详细讨论。
示例
在之前的章节中,我们已经使用了具有key
能力的类型:所有对象必须有一个UID
字段,我们在示例中使用了它;我们还将Storable
类型作为Config
结构体的一部分使用。Config
类型也具有store
能力。
/// 这个类型具有`store`能力。
public struct Storable has store {}
/// Config 包含一个具有`store`能力的`Storable`字段。
public struct Config has key, store {
id: UID,
stores: Storable,
}
/// MegaConfig 包含一个具有`store`能力的`Config`字段。
public struct MegaConfig has key {
id: UID,
config: Config, // 在这里!
}
具有store
能力的类型
在Move中,除了引用之外,所有原生类型都具有store
能力。包括:
标准库中定义的所有类型也具有store
能力。包括:
进一步阅读
- Move参考中的类型能力。