我是Scala的新手,我正在尝试从Java转换这个for循环:
for(int x=1, y=2; x<=5; x++, y+=2)
System.out.println(x+y);
我正在尝试压缩Scala中的值,因为我找不到一种方法来拥有多个非嵌套的计数器:
val a = Seq(1 to 5)
val b = Seq(2 to 10 by 2)
for((x,y) <- a.zip(b))
println(x+y)
但上面的代码给出了这个错误:
类型不匹配; found:scala.collection.immutable.Range required:String
有谁知道如何解决这个问题?我更愿意只使用for循环,而不是循环。
答案 0 :(得分:2)
你可以试试。 。
((1 to 5) zip (2 to 10 by 2)).foreach(x => println(x._1+x._2))
由于Scala for
的理解与其他语言中的for()
循环有很大不同,因此在初学者获得map
的充分知识之前,通常应该避免使用它们, flatMap
和foreach
。
答案 1 :(得分:2)
试试这个,不需要将Range
包裹在Seq
:
val a = 1 to 5
val b = 2 to 10 by 2
for(
(x,y) <- a.zip(b)
)
println(x+y)