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

如何为Scala 3枚举实现通用的enumDescr描述获取方法

Scala 3 通用enumDescr实现方案

Scala 3 原生支持enum语法,不再依赖Scala 2的Enumeration类,所有枚举的伴生对象都会自动混入scala.reflect.Enum特质,我们可以直接基于这个特质实现通用方法,和Scala 2的用法几乎一致。

实现代码

import scala.reflect.Enum

def enumDescr[E <: scala.Enum](enumeration: Enum[E]): String =
  // 去掉伴生对象类名默认的$后缀,得到纯枚举名
  val enumName = enumeration.getClass.getSimpleName.stripSuffix("$")
  s"$enumName: ${enumeration.values.mkString(", ")}"

入参说明

入参类型Enum[E]是Scala 3编译器为所有枚举伴生对象自动实现的公共接口,自带values方法返回所有枚举实例,不需要对自定义枚举做任何额外修改。

使用示例

和你预期的调用方式完全兼容:

@description(enumDescr(InvoiceCategory))
enum InvoiceCategory:
  case `Travel Expenses`
  case Misc
  case `Software License Costs`

调用后输出结果为:InvoiceCategory: Travel Expenses, Misc, Software License Costs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:03