如何在枚举 class 中获得使用 "when" 的方法?
How can I get a method working with "when" inside a enum class?
我需要这种与 WHEN 调用配合使用的“有趣价格”方法。但是,我就是做不到。我需要能够打印出下面的注释代码。我错过了什么?
enum class Tariff {
STANDARD, EVENT, WEEKEND;
fun price() {
when {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
}
}
//val default = Tariff.STANDARD
//println(default.price()) // gives 1.99
//val weekend = Tariff.WEEKEND
//println(weekend.price()) // gives 2.99
要引用在枚举中调用 price()
的事物(枚举的实例),您可以使用单词 this
,因此您应该这样做:
fun price() : String {
return when (this) {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
}
注意 return 类型和 return
关键字。
或者:
fun price() =
when (this) {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
与其使用 when
枚举函数中的枚举值,不如考虑将 price
存储为 class 的 属性:
enum class Tariff(val price: String) {
STANDARD("1.99"), EVENT("1.49"), WEEKEND("2.99");
}
那么你可以这样称呼它:
fun main() {
println(Tariff.STANDARD.price)
println(Tariff.EVENT.price)
println(Tariff.WEEKEND.price)
}
结果:
1.99
1.49
2.99
我需要这种与 WHEN 调用配合使用的“有趣价格”方法。但是,我就是做不到。我需要能够打印出下面的注释代码。我错过了什么?
enum class Tariff {
STANDARD, EVENT, WEEKEND;
fun price() {
when {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
}
}
//val default = Tariff.STANDARD
//println(default.price()) // gives 1.99
//val weekend = Tariff.WEEKEND
//println(weekend.price()) // gives 2.99
要引用在枚举中调用 price()
的事物(枚举的实例),您可以使用单词 this
,因此您应该这样做:
fun price() : String {
return when (this) {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
}
注意 return 类型和 return
关键字。
或者:
fun price() =
when (this) {
STANDARD -> "1.99"
EVENT -> "1.49"
WEEKEND -> "2.99"
}
与其使用 when
枚举函数中的枚举值,不如考虑将 price
存储为 class 的 属性:
enum class Tariff(val price: String) {
STANDARD("1.99"), EVENT("1.49"), WEEKEND("2.99");
}
那么你可以这样称呼它:
fun main() {
println(Tariff.STANDARD.price)
println(Tariff.EVENT.price)
println(Tariff.WEEKEND.price)
}
结果:
1.99
1.49
2.99