折叠列表与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 + 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} )") 

这一个按预期工作,我唯一解决的是解构。 奇怪的是,如果我删除内部的时候 (并且只用一个Pair构造函数替换它),代码将同时工作。

提前致谢。

这是Kotlin Script编译中的一个错误。

感谢@razr报告它: KT-22029

Interesting Posts