美文网首页
Android kotlin 替代 if...else... 语

Android kotlin 替代 if...else... 语

作者: JarryLeo | 来源:发表于2019-05-30 11:25 被阅读0次

新建一个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操作") }

相关文章

网友评论

      本文标题:Android kotlin 替代 if...else... 语

      本文链接:https://www.haomeiwen.com/subject/enemtctx.html