我想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: ??) = ...
uj5u.com熱心網友回復:
我沒有看到所有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"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/339692.html
上一篇:在Scala中利用通用回傳型別
下一篇:Scala獲得結果的平均值
