我正在尝试创建以下内容:
(1, 1)
(1, 2)
(1, 3)
...
(9,9)
Scala中的我尝试过这样的事情:
(1 to 9) zip (1 to 9)
,但那不太对劲。有一个干净的功能方式来做到这一点?希望无论什么解决方案都可以轻松扩展到三元组,等等。
答案 0 :(得分:4)
对1
到9
的2个范围使用for-comprehension。
val tuples = for (x <- 1 to 9; y <- 1 to 9) yield (x, y)
答案 1 :(得分:1)
您也可以使用desugared版本
val tuples = (1 to 9).flatMap(y => (1 to 9).map(y => (x,y)) )
或算术
val tuples = (0 until 9*9).map(i => (i/9+1, i%9+1) )
或基于流的
val s:Stream[Int] = (1 to 9).toStream #::: s
val tuples = (1 to 9).flatMap(List.fill(9)(_)).zip(s)
或基于对称收集的
val tuples = (1 to 9).map(List.fill(9)(_)).flatten zip
List.fill(9)((1 to 9)).flatten