rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • 静态强类型

    • Java
    • Kotlin
    • Dart
    • Swift
  • 静态弱类型

    • C语言
    • C++
  • 动态强类型

    • Python
  • 动态弱类型

    • JavaScript
    • PHP

lambda

Android kotlin 替代 if...else... 语句,尾lambda写法

新建一个kt文件复制以下代码:

inline infix fun Boolean.trueLet(trueBlock: Boolean.() -> Unit): Else {
    if (this) {
        trueBlock()
        return NotDoElse(this)
    }
    return DoElse(this)
}

inline infix fun Boolean.falseLet(falseBlock: Boolean.() -> Unit): Else {
    if (!this) {
        falseBlock()
        return NotDoElse(this)
    }
    return DoElse(this)
}

interface Else {
    infix fun elseLet(elseBlock: Boolean.() -> Unit)
}

class DoElse(private val boolean: Boolean) : Else {
    override infix fun elseLet(elseBlock: Boolean.() -> Unit) {
        elseBlock(boolean)
    }
}

class NotDoElse(private val boolean: Boolean) : Else {
    override infix fun elseLet(elseBlock: Boolean.() -> Unit) {
    }
}

用法:

//原生写法
if (a > 1) {
    println("执行操作")
}
//替代if写法
(a > 1).trueLet { println("执行操作") }

//原生写法
if (a != 1) {
    println("执行操作")
}
//替代if写法
(a == 1).falseLet { println("执行操作") }

//原生写法
if (a < 1) {
    println("执行true操作")
}else{
    println("执行else操作")
}

//替代if写法
(a < 1).trueLet { println("执行true操作") }.elseLet { println("执行else操作") }
最近更新:: 2020/7/28 09:01
Contributors: luokaiwen