折叠列表与kotlin中的解构赋值配对
我尝试从字符列表中的折叠操作获得多个结果,然后对这两个值使用解构赋值给它们自己的变量。但是,这似乎导致由科特林编译器异常:折叠列表与kotlin中的解构赋值配对
java.lang.UnsupportedOperationException: Don't know how to generate outer expression for class <closure-Test$1>
奇怪(我)不破坏结构,这按预期工作。以下是一个示例:
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 + char.toInt()*2)
else -> throw RuntimeException("exception")
}
})
println("($fst , $snd)")
这会导致例外。
val fstSec = "fst" val pair = "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 + char.toInt()*2)
else -> throw RuntimeException("exception")
}
})
println("(${pair.first} , ${pair.second})")
这一个按预期工作,我删除的唯一东西是解构。奇怪的是,如果我删除内部时(并将其替换为对构造函数),代码工作两次。
在此先感谢。
回答:
这是Kotlin Script编译中的一个错误。
感谢@razr报告它:KT-22029
以上是 折叠列表与kotlin中的解构赋值配对 的全部内容, 来源链接: utcz.com/qa/265754.html