删除对象
删除对象分为两个步骤:
- 解包对象并检索其 ID。
- 删除对象 ID。
1. 解包
有一种特定的方法来解包对象:
public struct Demo has key, store {
id: UID,
value: u64,
}
entry fun destroy(demo: Demo) {
// 1. 解包对象。
let Demo {id, value: _} = demo;
}
在解包时检索对象 ID,_
符号表示忽略从解包中接收 value
字段。_
还通常用于忽略多值返回函数的返回值:
// 计算和与积。
fun calculate(a: u64, b:u64): (u64, u64) {
(a + b, a * b)
}
fun call() {
// 只想使用 calculate 函数结果中的和。
let (sum, _) = calculate(1, 2);
}
2. 删除对象 ID
由于我们从解包中检索到了对象 ID,使用 object::delete
删除 ID,然后 Demo 对象就被删除了。
完整的删除对象函数应为:
entry fun destroy(demo: Demo) {
// 1. 解包对象。
let Demo {id, value: _} = demo;
// 2. 删除对象 ID。
object::delete(id);
}