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