You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用match语句判断Fungible/Non-Fungible资源类型

解决Flow区块链中判断Bucket资源类型的编译错误

问题场景

需要判断传入方法的bucket资源是Fungible(可 fungible)还是Non-Fungible(不可 fungible)资源,两种类型对应不同操作逻辑,尝试的代码如下:

let resource_man = bucket.resource_manager();
match resource_man.resource_type() {
  ResourceType::NonmFungible => {//do something here}
  ResourceType::Fungible => {//do another here}
}

编译错误

执行代码时出现如下错误:

error[E0533]: expected unit struct, unit variant or constant, found struct variant 'ResourceType::NonFungible'

解决方案

1. 修正拼写错误(表层问题)

代码中把 NonFungible 误写为 NonmFungible,这是第一个需要修正的点,但核心错误是结构体变体的匹配方式问题。

2. 推荐:使用内置判断方法

Flow Cadence的ResourceManager提供了直接判断资源类型的便捷方法,无需手动匹配ResourceType变体:

let resource_man = bucket.resource_manager();
if resource_man.is_fungible() {
    // 处理可 fungible 资源的逻辑
} else if resource_man.is_non_fungible() {
    // 处理不可 fungible 资源的逻辑
}

3. 可选:正确使用match表达式匹配变体

如果坚持用match,需要注意ResourceType::NonFungible是带关联类型的结构体变体,必须在分支中处理其关联参数(用_忽略即可):

let resource_man = bucket.resource_manager();
match resource_man.resource_type() {
    ResourceType::Fungible => {
        // 可 fungible 资源逻辑
    },
    ResourceType::NonFungible(_) => {
        // 不可 fungible 资源逻辑
    }
}

内容的提问来源于stack exchange,提问作者Leo Magal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:57:05