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)
}
目录
相关文章
|
6天前
|
存储 Kotlin
Kotlin中的Lambda表达式基本定义和使用
Kotlin中的Lambda表达式基本定义和使用
7 2
|
6天前
|
存储 Kotlin
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
8 1
|
6天前
|
存储 开发者 Kotlin
Kotlin Lambda表达式与标准库中的高阶函数
Kotlin Lambda表达式与标准库中的高阶函数
8 1
|
5天前
|
开发者 Kotlin
Kotlin中List的Lambda表达式应用与解析
Kotlin中List的Lambda表达式应用与解析
5 0
|
5天前
|
Kotlin
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
Kotlin中的When表达式:灵活、强大且直观的条件控制工具
3 0
|
11月前
|
Java 编译器 Kotlin
Kotlin 中变量,类型,表达式,函数详解
Kotlin 中变量,类型,表达式,函数详解
73 0
|
Java 开发者 Kotlin
Kotlin中lambda表达式详解
lambda运算时java后面版本引进的,所以实现的仅仅是从形式上简化代码,内部的优化并不是非常出色,而Kotlin一开始就支持函数式编程,使得其lambda表达式具有性能上的优势,同时Kotlin简洁的风格也给lambda表达式进一步简化提供了一个良好的实现方式,下面带大家具体看看他们之间的区别以及如何更好的使用Kotlin的极简化lambda表达式
143 0
Kotlin中lambda表达式详解
|
编译器 Kotlin
Kotlin 之表达式详解
Kotlin 之表达式详解
|
算法 Java 编译器
Kotlin学历之函数与Lambda表达式
Kotlin学历之函数与Lambda表达式
87 0
|
Java Kotlin
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
270 0
【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )