gpt4 book ai didi

java - 在 Kotlin 的 when 语句中检查数组大小和列表大小

转载 作者:IT老高 更新时间:2023-10-28 13:44:05 26 4
gpt4 key购买 nike

我是 Kotlin 和一般编程的新手。我真的很喜欢模式匹配的想法,正如您在下面的代码中看到的那样,我正在尝试使用 when 语句。

fun main(args: Array<String>) {


val myAr = arrayOf(1,2,3)
val myL = listOf(1,2,3)

fun probablyBlind() {

when(myL.size != myAr.size) {

myL.size > myAr.size -> {
println("myL.size > myAr.size = ${myL.size > myAr.size}")
}
myL.size < myAr.size -> myAr.forEach { println(it) }
}

if(myL.size != myAr.size) {
println("Inside if. myL.size > myAr.size =
${myL.size > myAr.size}")
}
}

probablyBlind()
}

如果你运行代码,结果是:

myL.size > myAr.size = false

这意味着在某些时候列表的大小与数组的大小不同。然后它在 when 语句中将第一个比较评估为真。但随后它打印出错误。这意味着它不应该运行这部分代码。if 语句永远不会计算为真。

谁能帮我解决这个问题?也许这真的很容易,我现在看不到。如果是这样,请原谅。

最佳答案

when(myL.size != myAr.size)

这里你指定 when-表达式是一个 Boolean 值,比较 MyL.sizemyAr 的结果。尺寸。假设它们相等,这意味着您搜索值 false 的匹配项。

myL.size > myAr.size -- 你的第一个 when-子句。由于大小相等,因此计算结果为 false 并匹配 when 表达式。

你真正想说的只是

when {
myL.size > myAr.size -> {
println("myL.size > myAr.size = ${myL.size > myAr.size}")
}
myL.size < myAr.size -> myAr.forEach { println(it) }
}

关于java - 在 Kotlin 的 when 语句中检查数组大小和列表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48753475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com