Joh*_*Joe 1 if-statement kotlin
我的代码如下
private fun validateInput(): Boolean {
if (etReportRow1.text.toString() == ""
|| etReportRow2.text.toString() == ""
|| etReportRow3.text.toString() == "")
return false
else
return true
}
Run Code Online (Sandbox Code Playgroud)
编译器告诉我
冗余'if'语句减去...(Ctrl + F1)此检查报告if语句是否可以简化为单个语句.例如:if(foo()){return true} else {return false}可以简化为返回foo().
建议的代码不会进入循环吗?
表格中的所有陈述:
if(condition){
return false
} else {
return true
}
Run Code Online (Sandbox Code Playgroud)
可以简化为:
return !condition
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,它将导致:
return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")
Run Code Online (Sandbox Code Playgroud)
要么:
return
etReportRow1.text.toString().isNotEmpty() &&
etReportRow2.text.toString().isNotEmpty() &&
etReportRow3.text.toString().isNotEmpty()
Run Code Online (Sandbox Code Playgroud)
注意:这isNotEmpty()
是一种扩展方法:
public inline fun CharSequence.isNotEmpty(): Boolean = length > 0
Run Code Online (Sandbox Code Playgroud)
为避免重复代码,您还可以使用Sequence
:
public fun validateInput() = sequenceOf(etReportRow1, etReportRow2, etReportRow3)
.map { it.text.toString() }
.all { it.isNotEmpty() }
Run Code Online (Sandbox Code Playgroud)
因为布尔表达式的计算结果为布尔值,所以您只需返回表达式本身的结果,而无需显式返回true
或false
.
您可以使用以下单表达式函数进一步简化操作:
private fun validateInput() = etReportRow1.text.toString() != "" &&
etReportRow2.text.toString() != "" &&
etReportRow3.text.toString() != ""
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
170 次 |
最近记录: |