kotlin - 折叠 list 与Kotlin中的销毁任务配对

标签 kotlin fold destructuring

我尝试从对一个字符列表的折叠操作中获得多个结果,然后对每个值使用解构赋值给它们自己的变量。但这似乎导致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} )")

这一操作按预期进行,我删除的唯一内容是销毁。奇怪的是,如果我在什么时候删除了内部结构(并且仅用Pair构造函数替换了内部结构),则代码两次都起作用。

提前致谢。

最佳答案

这是Kotlin脚本编译中的错误。

感谢@razr返回:KT-22029

关于kotlin - 折叠 list 与Kotlin中的销毁任务配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994030/

相关文章:

firebase - Kotlin Firebase:无法将java.lang.String类型的对象转换为com.example.Model.perizinan类型

javascript - JS ES6 : Get parameters as an object with destructuring

javascript - js 解构赋值在 while 循环中不起作用

Scala:运算符 foldl 是中缀吗?

Java 折叠数组列表

haskell - 在 Emacs Lisp 中使用 foldr 实现 map

javascript - 不清楚 ES6 解构函数参数默认值

android - 强制参数为可以传递给方法的特定类型

java - FirebaseUI 自定义布局不显示

gradle - Gradle Maven使用kotlin-dsl发布Pom