什么是Kotlin嵌套循环语法问题?

z4iuyo4d  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(194)

此语法出现错误

for (i in 0 until 8) {
      for (j in 0 until 8) {

      } println()
  }

错误是
for不是表达式,此处只允许使用表达式。
但这是有效的

for (i in 0 until 8) {
      for (j in 0 until 8) {

      }
      println()
  }

我唯一改变的是调用println()的位置,我曾经使用过java,所以我认为位置不重要。这里有什么问题吗?

igetnqfo

igetnqfo1#

我在KotlinPlayground做了一些测试,Kotlin编译器确实不能解析放在同一行上并且没有被;除尽的语句。
例如,10 println("")将产生错误:“Unresolved reference: println“。注意,10实际上是表达式,因为表达式是产生单个值的代码块。

猜测如下:

真实的的问题是,为什么Kotlin编译器显示特定的错误,即

For is not an expression, and only expressions are allowed here

我相信这与Kotlin编译器的代码解析算法有关。这看起来像是编译器试图将同一行上的多个语句解析为一个表达式。for关键字使其立即失败。然而,如果您将for循环替换为一个真实的表达式,编译器将突出显示println调用为错误,因为它对于表达式来说是多余的。

相关问题