為了優化我的回圈,如果我的“if”構造為真,我需要打破它。例如:
radioGroup.forEach { button ->
button.color?.let {
if (it = myColor) {
println("Color fits!")
/** Here i need to break radioGroup.forEach loop because i found color */
}
}
}
但我只能在回圈內呼叫“break”。你能幫我解決嗎?
uj5u.com熱心網友回復:
此處其他答案的替代方法是使用:
radioGroup.firstOrNull { button -> button.color == myColor }?.let {
println("Color fits!")
//"it" is the matched button here
}
好的是在里面let你可以訪問匹配的按鈕作為it變數。
uj5u.com熱心網友回復:
例如,您需要使用帶有標簽名稱的運行塊并根據您的條件停止它
run loop@ {
radioGroup.forEach { button ->
button.color?.let {
if (it = myColor) {
println("Color fits!")
return@loop
}
}
}
}
uj5u.com熱心網友回復:
有3種方法可以實作:
- 您可以將 return 與標簽一起使用:
run loop@{
radioGroup.forEach { button ->
println(button)
button.color?.let {
if (it == myColor) {
println("Color fits!")
return@loop
}
}
}
}
- 您可以創建一個函式并使用類似的return關鍵字:
fun fits(radioGroup: List<Button>, myColor: String): Boolean {
radioGroup.forEach { button ->
button.color?.let {
if (it == myColor) {
return true
}
}
}
return false
}
- 或者干脆去掉退貨:
if (radioGroup.any { button -> button.color == myColor }) {
println("Color fits!")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/388564.html
標籤:科特林
