scala - 如何为 Scala 3 枚举创建通用方法

标签 scala enums scala-3

我想要一个简单的enumDescr任何 Scala 3 枚举的函数。
例子:

  @description(enumDescr(InvoiceCategory))
  enum InvoiceCategory:
    case `Travel Expenses`
    case Misc
    case `Software License Costs`
斯卡拉 2 这很简单( Enumeration ):
def enumDescr(enum: Enumeration): String =
  s"$enum: ${enum.values.mkString(", ")}"
但是在中是怎么做的斯卡拉 3 :
def enumDescr(enumeration: ??) = ...

最佳答案

我没有看到所有人共享的任何共同特征 enum伴侣对象。
您仍然可以调用 values不过,反射(reflection)一下:

import reflect.Selectable.reflectiveSelectable

def descrEnum(e: { def values: Array[?] }) = e.values.mkString(",")

enum Foo:
  case Bar
  case Baz

descrEnum(Foo) // "Bar,Baz"

关于scala - 如何为 Scala 3 枚举创建通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69743692/

相关文章:

Scala:对象初始化程序中的并行收集导致程序挂起

scala - 如何使用 Spark/scala 显示列函数的结果,就像 show() 对数据框所做的那样

java - ENUM 没有获取值的方法

ios - swift 2 : @objc protocol and enum array

scala - scala 3 中删除了 quasiquote 吗?

scala - Scala 3 编译器操作中用于类型类派生的元组

scala - 在 Parboiled 中匹配 {N,M} 个字符

scala - 如何获取路径依赖类型的类标签

C# 重载枚举来存储值

Scala:尝试了扩展方法,但无法完全构造(多个类上的扩展名称相同)