1,key是什么?
key 是和uid 结合在一起使用的。uid 是一个地址。这两者的结合就是 建立一个全局索引,而这个全局索引的内容就是uid,就是这个地址,这个地址,就是对象地址。通过这个地址,可以找到这个对象。
我们可以建立空的全局索引,也就是空对象,也就是如下结构:
struct Car has key {
id:UID
}
2,store是什么?
store 声明一个全局存储。一般和key一起使用,这样可以通过key,找到store的内容,也就是对象的内容。如下:
struct Car has key store {
id:UID,
color: u16
}
这个struct 必须拥有store 声明,color 的内容才会被全局存储。也才拥有通过key(对象地址)检索到 color的能力。
如果一个结构只有store,没有key,一般是用来拆分比较的大struct结构。比如:
struct CarColor has store {
color:u16,
}
struct Car has key store {
id: UID,
color: CarColor
}
而这样,CarColor的存储内容,我们是无法访问的,只能通过Car来间接索引访问CarColor这个全局存储。
key 和store,这样大家可能不理解,我换一个表现形式,大家就理解了。 (key => store)
{
"key1":value1,
"key2": value2,
"key3": value3
}
store1 拆分出来单独定义,就是 store
struct store1 {
ll: value3,
}
key1 拆分出来,就是key
{
"key":null
}
key store,就是把这两个给组合到一起,哈哈哈
{
"key1":value1,
"key2": value2,
"key3": store1
}
so easy