Kotlin表达式(中缀、分支、When)

本文通过实例介绍Kotlin中的中缀表达式、分支表达式(if/when)的应用,包括自定义运算符、登录验证及音乐播放状态切换等功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、中缀表达式
只有一个参数,且用infix修饰的函数
例如:

//书
class Book{
    //infix 自定义运算符的中缀表达式。本没有on,自定义一个,不需要类名.方法即可调用
    //传入任意类型,返回一个Boolean类型的参数
    infix fun on(any: Any): Boolean{
        return true
    }
}
//桌子
class Desk

fun main(args: Array<String>) {
    if(Book() on Desk()){
        println("书在桌上")
    }
}

二、分支表达式(如果条件较多,例如If、)
写一个最简单的登录

package net.println.kotlin.chapters

import sun.security.util.Debug
import sun.security.util.Password

/**
 * @author:wangdong
 * @description:分支表达式实例if
 */

private const val USERNAME = "wangdong"
private const val PASSWORD = "123456"
private const val ADMIN_USER = "root"
private const val ADMIN_PASSWORD = "123456"

private const val DEBUG = "1"
private const val USER = "0"

fun main(args: Array<String>) {
    var mode = if (args.isNotEmpty() && args[0] == "1"){
        DEBUG
    }else{
        USER
    }

    println("输入我的用户名")
    //readlin从控制台接收数据
    val userName = readLine()
    println("请输入我的密码")
    val passWord = readLine()

    if (mode == DEBUG && userName == ADMIN_USER && passWord == ADMIN_PASSWORD){
        println("欢迎管理员登陆")
    }else if (userName == USERNAME && passWord == PASSWORD){
        println("欢迎登陆")
    }else{
        println("用户名或者密码错误")
    }
}

三、简单写一个播放音乐的(when)

package net.println.kotlin.chapters

/**
 * @author:wangdong
 * @description:`WhenExample.kt`
 */
class WhenExample {


    enum class State {
        IDLE, BUFFERING, PLAYING, PAUSED
    }

    private var state = State.IDLE


    fun pause() {
        when (state) {
            WhenExample.State.BUFFERING, WhenExample.State.PLAYING -> doPause()
            else -> {

            }
        }
    }

    fun resume() {
        when (state) {
            WhenExample.State.PAUSED -> doResume(state)
        }//什么都不做
    }

    fun doResume(state: State) {
        if (state == State.PLAYING)
        //处理真正的继续播放逻辑
        println("播放音乐")
    }

    private fun doPause() {
        state = State.PAUSED
        //处理真正的暂停逻辑
    }

}
fun main(args: Array<String>) {
    val example: WhenExample = WhenExample()
    example.doResume(WhenExample.State.PLAYING)
}

四、When表达式
加强版的switch,支持任意类型
支持纯表达式条件分支(类似于if)
表达是必须得完整

package net.println.kotlin.chapters

/**
 * @author:wangdong
 * @description:`WhenExample.kt`
 */
fun main(args: Array<String>) {
    val x = 5
    when(x){
        //是否是int
        is Int -> println("hello $x")
        //是在区间范围内
        in 1..100 -> println("$x 在1-100区间内")
        //不在区间内
        !in 1..100 -> println("$x 不在1-100区间内")
        //判断x和下面的表达式值是不是一样
        args[0].toInt() -> println("参数和 $x 一样")
    }

    val mode = when{
        args.isNotEmpty() && args[0] == "1" ->1
        else -> 0
    }

    println(mode)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值