gpt4 book ai didi

Kotlin:将枚举与 when 一起使用

转载 作者:行者123 更新时间:2023-12-04 20:00:59 25 4
gpt4 key购买 nike

有没有办法将 when 参数转换为枚举?

 enum class PaymentStatus(val value: Int) {
PAID(1),
UNPAID(2)
}

fun f(x: Int) {
val foo = when (x) {
PaymentStatus.PAID -> "PAID"
PaymentStatus.UNPAID -> "UNPAID"
}
}

上面的例子将不起作用,因为 x 是 int 并且提供的值是枚举,如果我通过 PaymentStatus.PAID.value它会起作用,但是我没有从何时(全覆盖)中受益,并且
when (x as PaymentStatus)

不起作用。

任何人有任何想法使这项工作?

最佳答案

如果您需要检查一个值,您可以执行以下操作:

fun f(x: Int) {
val foo = when (x) {
PaymentStatus.PAID.value -> "PAID"
PaymentStatus.UNPAID.value -> "UNPAID"

else -> throw IllegalStateException()
}
}

或者你可以创建工厂方法 create伴生对象 枚举 类(class):
enum class PaymentStatus(val value: Int) {
PAID(1),
UNPAID(2);

companion object {
fun create(x: Int): PaymentStatus {
return when (x) {
1 -> PAID
2 -> UNPAID
else -> throw IllegalStateException()
}
}
}
}

fun f(x: Int) {
val foo = when (PaymentStatus.create(x)) {
PaymentStatus.PAID -> "PAID"
PaymentStatus.UNPAID -> "UNPAID"
}
}

关于Kotlin:将枚举与 when 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com