这段代码是什么意思?

What is the meaning of this snippet of code?

我正在学习Scala语言,我看不懂这段代码:

for {
  i <- Set(2,3)
  j <- 1 to i
  k <- i to 2 by -1
} yield (j,k)

iSet 时,j1 to i 的范围是什么意思?

我建议您阅读有关理解的 Scala 文档 and/or 这个关于 SO 的答案:Confused with the for-comprehension to flatMap/Map transformation

您提供的代码完全等同于以下代码:

Set(2,3)
  .flatMap { i => 
    (1 to i).flatMap { j =>
      (i to 2 by -1).map { k =>
        (j,k)
      }
    }
  }

这样,您应该可以更好地看出 i 是集合中的一个“项目”。