scala - 如何为 Scala 3 枚举创建通用方法
问题描述
我想enumDescr
为任何 Scala 3 枚举提供一个简单的函数。
例子:
@description(enumDescr(InvoiceCategory))
enum InvoiceCategory:
case `Travel Expenses`
case Misc
case `Software License Costs`
在Scala 2中,这很简单 ( Enumeration
):
def enumDescr(enum: Enumeration): String =
s"$enum: ${enum.values.mkString(", ")}"
但它是如何在Scala 3中完成的:
def enumDescr(enumeration: ??) = ...
解决方案
我没有看到所有enum
伴生对象共有的任何共同特征。
values
但是,您仍然可以反射性地调用:
import reflect.Selectable.reflectiveSelectable
def descrEnum(e: { def values: Array[?] }) = e.values.mkString(",")
enum Foo:
case Bar
case Baz
descrEnum(Foo) // "Bar,Baz"
推荐阅读
- ffmpeg - VLC 可以读取 mp3 但 FFMPEG“找不到编解码器参数”
- web-services - SOAP 服务的 WSDL(带有基本身份验证)是否也需要身份验证?
- .net-core - 在 Azure devops 中从 Ubuntu 16.04 更新到 18.04 时在 % 前面插入空格
- selenium - 如何为范围报告中的每个步骤附加屏幕截图?
- javascript - HTML、CSS、JavaScript。画布将其他 div 推开
- css - 在laravel 8中缩小侧边栏时内容不会扩展
- python - python:将列表的每个元素组合成一个元组列表
- r - 根据列中的条件使用 dplyr 进行切片
- npm - 尽管我执行 npm login 后跟 npm install 命令,但 Npm install 不会安装安全包
- java - 如何使用新 Map 更新 Java HashMap