Tag: 解构

折叠列表与kotlin中的解构赋值配对

我尝试从一个字符列表上的折叠操作中得到多个结果,然后使用两个值的解构赋值给它们自己的variables。 但是这似乎导致了kotlin编译器的一个例外: java.lang.UnsupportedOperationException: Don’t know how to generate outer expression for class 奇怪(对我来说)没有解构,这是按照预期工作的。 这里是一个例子: val fstSec = “fst” val (fst, snd) = “this is a test for folding to pair” .toCharArray() .fold(Pair(0, 0), { sumPair, char -> when (fstSec) { “fst” -> Pair(sumPair.first + char.toInt()*2, sumPair.second + char.toInt()) “snd” -> Pair(sumPair.first + char.toInt(), sumPair.second + […]

为什么解构声明不能用在expression式中?

大概这个问题应该是Kotlin的作者,但是我确信在这个问题上有许多Kotlin用户对它的架构有深刻的了解。 所以我的问题是:为什么语言在expression式时不支持解构 ? 例如,我想要有以下代码: data class Person(val name: String, val age: Int) when (person) { (“John”, _) -> print(“It is John”) //it won’t compile else -> print(“It’s not John”) } 由于解构使用了component1, component2, etc.方法,所以我很好奇为什么这个简单的值比较不能像上面那样使用。 在修改机制或者破坏自身的when是否存在问题?