Jos*_*lez 1 oop applet functional-programming scala
在下面的代码中,当我尝试i = i + 10它时将无法编译,并出现错误cannot reassign to val.所以我var i = 0;在之前添加了for,但变量从未使用过:
var i = 0;
for(i <- 5 to 25) {
i = i + 10
ellipse(150, 150, tamano + i, tamano + i)
}
Run Code Online (Sandbox Code Playgroud)
您应该通过在线Scala教程熟悉一些Scala习语.这将涵盖此类问题.
for在Scala中使用时,val会在每个循环中创建一个新的.在你的例子中,iin the forshadow the outer var i,永远不会被使用.
在Scala中,vals无法重新分配.您可以随时分配新val的:
val j = i + 10
Run Code Online (Sandbox Code Playgroud)
然后使用j.
这段代码远非惯用的Scala,它主要基于不变性的概念.您可以尝试以下内容:
for(i <- 5 to 25 by 10) {
ellipse(150, 150, tamano + i, tamano + i)
}
Run Code Online (Sandbox Code Playgroud)
要么:
(5 to 25 by 10).foreach { i =>
ellipse(150, 150, tamano + i, tamano + i)
}
Run Code Online (Sandbox Code Playgroud)
还要注意的是to和by是为在方法只是语法糖Range对象:
Range.inclusive(start = 5, end = 25, step = 10) == (5 to 25 by 10) //true
Run Code Online (Sandbox Code Playgroud)