If statement 无冗余“如果”语句

If statement 无冗余“如果”语句,if-statement,kotlin,If Statement,Kotlin,我的代码如下 private fun validateInput(): Boolean { if (etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "") return false else return true } 编译器告诉

我的代码如下

 private fun validateInput(): Boolean {
     if (etReportRow1.text.toString() == "" 
         || etReportRow2.text.toString() == "" 
         || etReportRow3.text.toString() == "")
         return false
     else
         return true
 }
编译器告诉我

没有多余的“如果”语句。。。Ctrl+F1如果出现以下情况,则此检验报告 可以简化为单个语句的语句。例如: 如果foo{return true},则{return false}可以是 简化为返回foo

建议的代码不会进入循环吗?

试试看

return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")
试一试


由于布尔表达式的计算结果为布尔值,因此可以简单地返回表达式本身的结果,而不必显式返回true或false

您可以使用以下单表达式函数进一步简化:

 private fun validateInput() = etReportRow1.text.toString() != "" && 
                               etReportRow2.text.toString() != "" &&
                               etReportRow3.text.toString() != ""

由于布尔表达式的计算结果为布尔值,因此可以简单地返回表达式本身的结果,而不必显式返回true或false

您可以使用以下单表达式函数进一步简化:

 private fun validateInput() = etReportRow1.text.toString() != "" && 
                               etReportRow2.text.toString() != "" &&
                               etReportRow3.text.toString() != ""

表格中的所有状态:

if(condition){
    return false
} else {
    return true
} 
可简化为:

return !condition
因此,在您的情况下,这将导致:

return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")
或:

注意:isNotEmpty是一个扩展方法:

public inline fun CharSequence.isNotEmpty(): Boolean = length > 0
为了避免重复代码,还可以使用序列:


表格中的所有状态:

if(condition){
    return false
} else {
    return true
} 
可简化为:

return !condition
因此,在您的情况下,这将导致:

return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")
或:

注意:isNotEmpty是一个扩展方法:

public inline fun CharSequence.isNotEmpty(): Boolean = length > 0
为了避免重复代码,还可以使用序列:


我认为这应该奏效:

private fun validateInput() = !(etReportRow1.text.toString.isEmpty()  
                                || etReportRow2.text.toString().isEmpty()
                                || etReportRow3.text.toString().isEmpty() )

我认为这应该奏效:

private fun validateInput() = !(etReportRow1.text.toString.isEmpty()  
                                || etReportRow2.text.toString().isEmpty()
                                || etReportRow3.text.toString().isEmpty() )
更简洁的是:

public fun validateInput() = setOf(
    etReportRow1, etReportRow2, etReportRow3
).none { 
    "${it.text}".isEmpty() 
}
更简洁的是:

public fun validateInput() = setOf(
    etReportRow1, etReportRow2, etReportRow3
).none { 
    "${it.text}".isEmpty() 
}

你可以回来了!etReportRow1.text.toString==|| etReportRow2.text.toString==| | etReportRow3.text.toString==顺便说一句,避免对对象字符串使用==comparison@MauricePerry这是一个kotlin问题,它用==覆盖equals,因此这将起作用fine@MauricePerry如果我们不犯错误,我们就无法改进@利诺。。。我们不需要像stackoverflowu这样的网站,你可以直接返回!etReportRow1.text.toString==|| etReportRow2.text.toString==| | etReportRow3.text.toString==顺便说一句,避免对对象字符串使用==comparison@MauricePerry这是一个kotlin问题,它用==覆盖equals,因此这将起作用fine@MauricePerry如果我们不犯错误,我们就无法改进@利诺。。。我们不需要像stackoverflow这样的网站