首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能让一个方法在枚举类中使用"when“呢?

我怎样才能让一个方法在枚举类中使用"when“呢?
EN

Stack Overflow用户
提问于 2021-06-26 14:59:18
回答 2查看 48关注 0票数 1

我需要这个“有趣的价格”的方法工作时调用。然而,我就是做不到。我需要能够打印出下面的注释代码。我遗漏了什么?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-26 15:05:45

要引用在枚举中调用price()的对象(枚举的实例),可以使用单词this,因此应该这样做:

代码语言:javascript
复制
fun price() : String {
    return when (this) {
        STANDARD -> "1.99"
        EVENT -> "1.49"
        WEEKEND -> "2.99"
    }
}

注意返回类型和return关键字。

或者:

代码语言:javascript
复制
fun price() =
    when (this) {
        STANDARD -> "1.99"
        EVENT -> "1.49"
        WEEKEND -> "2.99"
    }
票数 2
EN

Stack Overflow用户

发布于 2021-06-26 20:20:01

您可以考虑将price存储为类的属性,而不是使用when枚举函数中的枚举值:

代码语言:javascript
复制
enum class Tariff(val price: String) {
    STANDARD("1.99"), EVENT("1.49"), WEEKEND("2.99");
}

然后你可以这样叫它:

代码语言:javascript
复制
fun main() {
    println(Tariff.STANDARD.price)
    println(Tariff.EVENT.price)
    println(Tariff.WEEKEND.price)
}

结果:

代码语言:javascript
复制
1.99
1.49
2.99
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68140001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档