Kotlin 极简小抄 P6(枚举、枚举的属性与方法、枚举的扩展方法)

发布于:2025-01-14 ⋅ 阅读:(13) ⋅ 点赞:(0)

Kotlin 概述

  1. Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言

  2. Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性

  3. Kotlin 是 Android 应用开发的首选语言,也可以与 Java 一样用于服务器端开发


一、枚举

1、定义枚举
enum class Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}
2、使用枚举
var today: Day = Day.MONDAY

println(today)
# 输出结果

MONDAY
  • 获取更多枚举信息
var today: Day = Day.MONDAY

println(today.ordinal)
println(today.name)
# 输出结果

0
MONDAY
3、遍历枚举
for (day in Day.values()) {
    println(day)
}
# 输出结果

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY

二、枚举的属性与方法

1、定义枚举
  • 定义枚举,同时定义属性与方法
enum class TrafficLight(var duration: Int) {
    RED(30),
    GREEN(45),
    YELLOW(5);

    // 计算整个信号灯周期的总时间
    fun totalCycleTime(): Int {
        var totalTime = 0
        for (light in TrafficLight.values()) {
            totalTime += light.duration
        }
        return totalTime
    }

    // 获取下一个信号灯颜色
    fun nextLight(): TrafficLight {
        val index = TrafficLight.values().indexOf(this) + 1
        return if (index < TrafficLight.values().size) {
            TrafficLight.values()[index]
        } else {
            // 循环回到第一个信号灯
            TrafficLight.values()[0]
        }
    }
}
2、使用枚举的属性与方法
  1. 使用枚举的属性
var totalTime = TrafficLight.RED.totalCycleTime()

println(totalTime)
# 输出结果

80
  1. 使用枚举的方法
var nextLight = TrafficLight.RED.nextLight()

println(nextLight)
# 输出结果

GREEN

三、枚举的扩展方法

1、定义枚举
enum class TrafficLight(var duration: Int) {
    RED(30),
    GREEN(45),
    YELLOW(5);

    // 计算整个信号灯周期的总时间
    fun totalCycleTime(): Int {
        var totalTime = 0
        for (light in TrafficLight.values()) {
            totalTime += light.duration
        }
        return totalTime
    }

    // 获取下一个信号灯颜色
    fun nextLight(): TrafficLight {
        val index = TrafficLight.values().indexOf(this) + 1
        return if (index < TrafficLight.values().size) {
            TrafficLight.values()[index]
        } else {
            // 循环回到第一个信号灯
            TrafficLight.values()[0]
        }
    }
}
2、定义枚举的扩展方法
fun TrafficLight.description(): String {
    return when (this) {
        TrafficLight.RED -> "红灯"
        TrafficLight.YELLOW -> "黄灯"
        TrafficLight.GREEN -> "绿灯"
    }
}
// 简写

fun TrafficLight.description(): String = when (this) {
    TrafficLight.RED -> "红灯"
    TrafficLight.YELLOW -> "黄灯"
    TrafficLight.GREEN -> "绿灯"
}
3、使用枚举的扩展方法
val nowLight = TrafficLight.RED

println(nowLight.description())
# 输出结果

红灯