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

如何在Scala 3中编写泛型枚举值转Map的工具函数?

Scala 3 枚举转名称映射工具函数实现

你需要的枚举转名称映射工具函数,在Scala 3里得基于官方的Enum类型类来实现,原代码里的写法有两处需要调整:

  1. 上下文约束要使用scala.Enum(注意大小写,不是小写的enum)
  2. 枚举值的获取要通过Enum.values[E]方法,而非直接调用E.values

修正后的实现如下:

import scala.Enum

def enumMap[E: Enum]: Map[String, E] = {
  Enum.values[E].map(value => (value.name, value)).toMap
}

补充说明

  • 用value.name比value.toString更可靠:name是枚举值的原生名称,不会被自定义的toString方法覆盖;如果你的场景确实需要使用toString的结果,直接替换即可。
  • 也可以用显式的类型约束写法,效果和上下文边界一致:
import scala.Enum

def enumMap[E <: Enum[E]]: Map[String, E] = {
  Enum.values[E].map(value => (value.name, value)).toMap
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:33:08