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

简介: 1、中缀表达式 只有一个参数,且用infix修饰的函数 例如://书class Book{ //infix 自定义运算符的中缀表达式。

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)
}
目录
相关文章
|
2月前
|
编译器 Android开发 开发者
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
Lambda表达式和匿名函数都是Kotlin中强大的特性,帮助开发者编写简洁而高效的代码。理解它们的区别和适用场景,有助于选择最合适的方式来解决问题。希望本文的详细讲解和示例能够帮助你在Kotlin开发中更好地运用这些特性。
42 9
|
4月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
56 13
|
4月前
|
Java Kotlin 索引
Kotlin教程笔记(9) - 分支与循环
Kotlin教程笔记(9) - 分支与循环
36 5
|
4月前
|
Java Kotlin 索引
Kotlin教程笔记(9) - 分支与循环
Kotlin教程笔记(9) - 分支与循环
|
4月前
|
IDE 开发工具 Kotlin
Kotlin教程笔记(6) - 函数与Lambda表达式
Kotlin教程笔记(6) - 函数与Lambda表达式
71 1
|
4月前
|
Java Kotlin 索引
Kotlin - 分支与循环
Kotlin - 分支与循环
|
4月前
|
Java Kotlin 索引
Kotlin - 分支与循环
Kotlin - 分支与循环
|
4月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式
|
4月前
|
Java Kotlin 索引
Kotlin教程笔记(9) - 分支与循环
Kotlin教程笔记(9) - 分支与循环
42 5
|
4月前
|
IDE 开发工具 Kotlin
Kotlin - 函数与Lambda表达式
Kotlin - 函数与Lambda表达式