Kotlin三元条件算子到典型if-else



有人能在Kotlin中将此语句转换为if-else语句吗?这样我就能理解代码了吗?

return email != null
? email.isEmpty
? "Please enter your email!"
: RegExp("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+.[a-z]")
.hasMatch(email)
? ""
: "Please enter a valid email!"
: "Please enter your email!";

@ArtyomSkrobov的答案是对该代码的字面解释。

我只想补充一点,因为最初的逻辑非常令人困惑:它可以在when语句中重新排列,并使用Kotlin标准库函数/类来更容易理解:

return when {
email.isNullOrEmpty() -> "Please enter your email!"
!email.matches(Regex("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+.[a-z]")) -> "Please enter a valid email!"
else -> ""
}
return if (email != null) {
if (email.isEmpty) "Please enter your email!"
else if (RegExp("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+.[a-z]").hasMatch(email)) ""
else "Please enter a valid email!"
} else "Please enter your email!"
return if (email != null){
when {
email.isEmpty() -> "Please enter your email!"
RegExp("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+.[a-z]"). hasMatch(email) -> ""
else -> "Please enter a valid email!"
}
} else "Please enter a valid email!"

最新更新