为什么不能在Kotlin中指定var/val循环?

为什么不能在Kotlin中指定var/val循环?,kotlin,Kotlin,为什么不能在Kotlin中的for循环中指定val或var类型。例如,我希望能够做到 for (var i in 0...data.size - 1) { for (j in 0..bytes.size - 1) { bytes[j] = data[i++]//cant do i++ in current kotlin because "i" is val } //do stuff } 但是我必须这样做

为什么不能在Kotlin中的for循环中指定val或var类型。例如,我希望能够做到

    for (var i in 0...data.size - 1) {
        for (j in 0..bytes.size - 1) {
            bytes[j] = data[i++]//cant do i++ in current kotlin because "i" is val
        }
        //do stuff
    }
但是我必须这样做

    var i = 0
    while (i < data.size) {
        for (j in 0..bytes.size - 1) {
            bytes[j] = data[i++]
        }
        //do stuff
    }
var i=0
而(i
我认为,由于Kotlin是一种试图简化大多数函数式编程概念的语言,因此它更倾向于禁止这种行为。此外,初始代码可能遇到的一个问题是,在字节数组的元素多于数据数组的情况下,会出现边界外异常。

您的示例与Java典型的(inti=0;这个问题对我来说似乎是基于观点的。可能或者是讨论像这样的语言设计问题的更好的地方。对我来说,我会发现这个结构令人困惑,因为((item in items){…}具有迭代语义,而您使用
var
的构造没有迭代语义,相反,它需要在正文中更改
,从而引入更多的混乱。使用i.inc()解决了我的问题。感谢您的解释!