作为我学习的一部分,我正在尝试将 Scala 表达式写入 scala 脚本,但遇到了错误。
我在 Scala REPL 中成功执行的 scala 代码是
def intList = List[1,2,3,4,5]
intList.filter(x => x%2 ==1).map(x => x * x).reduce((x,y) => x+y)
这成功执行,以下是我得到的结果。
scala> intList.filter(x => x % 2 == 1).map(x => x * x).reduce((x,y) => x + y)
res15: Int = 35
我正在尝试将其制作为 Scala 脚本或类,以便按需重新运行任意次数。我将它保存在一个名为SumOfSquaresOfOdd.scala的文件中
import scala.collection.immutable.List
object SumOfSquaresOfOdd extends App
{
def main(args:Array[String]):Unit =
{
var intList = List[Integer](1,2,3,4,5,6,7,8,9,10)
def sum = intList.filter(x => x % 2 ==1).map(x => x * x).reduce((x+y) => x + y)
println sum
}
}
当我使用 scalac 编译它时,控制台上会打印以下错误。
λ scalac SumOfSquaresOfOdd.scala
SumOfSquaresOfOdd.scala:8: error: not a legal formal parameter.
Note: Tuples cannot be directly destructured in method or function parameters.
Either create a single parameter accepting the Tuple1,
or consider a pattern matching anonymous function: `{ case (param1, param1) => ... }
def sum = intList.reduce(x => x % 2 ==1).map(x => x * x).reduce((x+y) => x + y)
^
one error found
如何在脚本中使用 filter、map、reduce 方法?感谢您的帮助和支持。
更新:代码中的错字已更新。