【发布时间】:2020-04-29 19:47:12
【问题描述】:
我有以下代码并想使用我的 toast 消息中失败的条件。如果不检查每个 if,我该怎么做?
if(player1.isNullOrBlank() || player2.isNullOrBlank())
Toast.makeText(this,"请输入两个玩家名称",Toast.LENGTH_LONG).show()
【问题讨论】:
标签: kotlin
我有以下代码并想使用我的 toast 消息中失败的条件。如果不检查每个 if,我该怎么做?
if(player1.isNullOrBlank() || player2.isNullOrBlank())
Toast.makeText(this,"请输入两个玩家名称",Toast.LENGTH_LONG).show()
【问题讨论】:
标签: kotlin
我会在这里使用when 表达式,因为无论如何您都必须检查每个条件。
val errorMessage -> when {
player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
player1.isNullOrBlank() -> "Please enter a name for Player 1"
player2.isNullOrBlank() -> "Please enter a name for Player 2"
else -> null
}
if (errorMessage != null) {
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
} else {
// success condition
}
另一个例子,使用also 代替赋值。
when {
player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
player1.isNullOrBlank() -> "Please enter a name for Player 1"
player2.isNullOrBlank() -> "Please enter a name for Player 2"
else -> null
}?.also { errorMessage ->
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
}
【讨论】:
您可以使用日志:
Log.e("Player 1 Status", player1.isNullOrBlank() + "");
Log.e("Player 2 Status", player2.isNullOrBlank() + "");
并在您运行 LogCat 时检查 Red Log。
【讨论】:
Toast.show()。
试试这样的:
val nullPlayerNames = listOf("p1" to player1, "p2" to player2)
.filter { (_, p) -> p.isNullOrBlank() }
.joinToString(separator = ", ") { (tag, _) -> tag }
Toast.makeText(this, nullPlayerNames, Toast.LENGTH_LONG).show()
【讨论】:
只需编写代码。不要想太多。只需检查您必须检查的内容并提供良好的错误消息即可。 || 运算符不输出要检查的旁道变量或类似的东西。只需编写代码即可。
if (player1.isNullOrBlank() && player2.isNullOrBlank()) {
Toast.makeText(this, "Please enter both player names", Toast.LENGTH_LONG).show()
} else if(player1.isNullOrBlank()) {
Toast.makeText(this, "Please enter player name 1", Toast.LENGTH_LONG).show()
} else if(player2.isNullOrBlank()) {
Toast.makeText(this, "Please enter player name 2", Toast.LENGTH_LONG).show()
}
【讨论】:
when 表达式?