Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
            页面加载耗时 0.00 毫秒·物理内存 159.3MB ·虚拟内存 1438.3MB
        
        欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
        
        
        函数 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;