Kotlin for循环中迭代变量无需标注var/val关键字的原因咨询
Kotlin for循环迭代变量无需var/val声明的原因
这是Kotlin语法设计时明确约定的简化规则,具体逻辑如下:
for循环的迭代变量默认是隐式只读(val)属性,作用域仅限定在循环内部,编译器会自动补全隐藏的val声明,无需开发者手动标注。你可以直接把for (i in 1..5)等价理解为for (val i in 1..5),后者本身也是符合Kotlin语法规则的写法,只是标注val属于冗余操作,一般都会省略。- Kotlin的
for循环是基于迭代器的遍历语法,没有传统C/Java那种支持自定义变量初始值、步进规则的三段式for写法,迭代变量的赋值、更新逻辑完全由in关键字后的区间/可迭代对象的迭代逻辑控制,不存在变量可变性的歧义,所以省略val/var不会影响代码可读性。
你可以通过下面的代码验证迭代变量的只读属性:
for (i in 1..5) { i = 3 // 编译报错:Val cannot be reassigned,直接证明i属于隐式val类型 print(i) }
如果需要在循环内使用可变的计数变量,可以在循环体内部手动声明var变量使用:
for (i in 1..5) { var count = i count += 10 println(count) }
内容的提问来源于stack exchange,提问作者Yana Dior
相关产品推荐
相关产品推荐

