从关联值初始化枚举

Mic*_*sen 6 enums kotlin

我想通过其关联值初始化枚举。

我的枚举:

enum class DirectionSwiped(raw: Int){
    LEFT(4),
    RIGHT(8);
}
Run Code Online (Sandbox Code Playgroud)

我想这样初始化它:

val direction = DirectionSwiped(raw: 4)
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

枚举类型无法实例化

为什么会这样?在 Swift 中,这个功能是这样工作的:

enum Direction: Int {
    case right = 2
}

let direction = Direction(rawValue: 2)
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它在 Kotlin 中工作?

Oma*_*gra 8

是的你可以

enum class DirectionSwiped(val raw: Int){
    LEFT(4),
    RIGHT(8);
}

val left = DirectionSwiped.LEFT
val right = DirectionSwiped.RIGHT

val leftRaw = DirectionSwiped.LEFT.raw
val rightRaw = DirectionSwiped.LEFT.raw

val fromRaw = DirectionSwiped.values().firstOrNull { it.raw == 5 }
Run Code Online (Sandbox Code Playgroud)

这将是访问实例的正确方法 enum class

你所要做的是创建定义网站,这是不可能的之外的新实例enumsealed类,这就是为什么说错误的构造函数是私有