switches

inline fun <T> Boolean.switches(noinline ifTrue: (Boolean) -> T, noinline ifFalse: (Boolean) -> T): T

一个简单的if-else能返回结果的实现,类似于Either的左右值,它可以更好的将代码变成链式函数调用, 也完全可以配合 arrow-kt,将结果封装成Either

//before
@JvmStatic
fun isFileExists(file: File?): Boolean {
if (file == null) return false
return if (file.exists()) true else isFileExists(file.absolutePath)
}
//after
fun isFileExists(file: File?): Boolean {
return file?.exists()?.switches(
ifTrue = { it },
ifFalse = { isFileExists(file.absolutePath) }
) ?: false
}