欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
全部教程·
区块链·
Move语言教程
[目录]
·
Resource 取出和销毁
Move语言 教程
Move 开发环境和配置
Move 编写和运行程序
Move 基础语法
Move语言 数据类型 Move语言 注释语法 Move语言 表达式 Move语言 作用域 Move语言 常量 Move语言 模块 Move语言 导入 Move语言 函数Move 流程控制
Move语言 条件语句 if Move语言 循环语句 break continue语句 Move语言 abort assertMove 进阶编程
Move语言 结构体 Move语言 限制符 Move语言 所有权 Move语言 引用 Move语言 泛型 Move语言 数组 VectorMove 资源Resource
Move语言 Signer Move语言 Resource Resource 创建和移动 Resource 读取和修改 Resource 取出和销毁
Move语言 教程
Move 开发环境和配置
Move 编写和运行程序
Move 基础语法
Move语言 数据类型 Move语言 注释语法 Move语言 表达式 Move语言 作用域 Move语言 常量 Move语言 模块 Move语言 导入 Move语言 函数Move 流程控制
Move语言 条件语句 if Move语言 循环语句 break continue语句 Move语言 abort assertMove 进阶编程
Move语言 结构体 Move语言 限制符 Move语言 所有权 Move语言 引用 Move语言 泛型 Move语言 数组 VectorMove 资源Resource
Move语言 Signer Move语言 Resource Resource 创建和移动 Resource 读取和修改 Resource 取出和销毁Move Resource 取出和销毁
函数 move_from 用来将 Resource 从账户下取出。
我们将实现 destroy 函数,将 Collection 的 T Resource 从账户取出并且销毁它的内容。
// modules/Collection.move
module Collection {
// ... skipped ...
public fun destroy(account: &signer) acquires Collection {
// account no longer has resource attached
let collection = move_from<Collection>(Signer::address_of(account));
// now we must use resource value - we'll destructure it
// look carefully - Items must have drop ability
let Collection { items: _ } = collection;
// done. resource destroyed
}
}
Resource 必需被使用。因此,从账户下取出 Resource 时,要么将其作为返回值传递,要么将其销毁。
但是请记住,即使你将此 Resource 传递到外部并在脚本中获取,接下来能做的操作也非常有限。
因为脚本上下文不允许你对结构体或 Resource 做任何事情,除非 Resource 模块中定义了操作 Resource 公开方法,否则只能将其传递到其它地方。
知道这一点,就要求我们在设计模块时,为用户提供操作 Resource 的函数。
move_from 函数签名:
native fun move_from<T: key>(addr: address): T;
AI 中文社