【发布时间】:2022-01-15 12:33:43
【问题描述】:
我有这两个枚举:
enum Season:
case Warm, Cold
enum Territory:
case Continente, Madeira, Açores
我想创建一个方法radioInputsFor,它接收枚举类型和具体的枚举值,以使这些调用有效:
radioInputsFor(Season, Season.Warm)
radioInputsFor(Season, Season.Cold)
radioInputsFor(Territory, Territory.Madeira)
而且这些无效:
radioInputsFor(Season, Territory.Madeira)
radioInputsFor(Territory, Season.Cold)
我还想在方法内的第一个参数上调用.values。
我应该为参数使用哪些正确的泛型和类型?
这个
def radioInputsFor[T <: Enum](default: T): T = default
正确地将第一个参数限制为枚举值。但是我找不到合适的类型来抽象枚举类型。
编辑:目前这是不可能的。但是this PR 正在添加所需的功能。
【问题讨论】:
-
枚举类型的伴侣似乎没有扩展任何特殊的东西。出于好奇,同时接受枚举和同伴作为参数的用例是什么?也就是说,你会用
values做什么? -
我想为枚举的每种情况(使用
values)创建一个无线电输入(在ScalaJS中),第二个参数(一个特定的枚举情况)将是要检查的无线电输入默认。接收枚举类型也可以让我得到它的名字。我有 3 个不同的不相关枚举,我想为其生成无线电输入。