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操作") }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容