我是Scala的新手,不知道如何返回包含每个数字的平方的数组。有人可以帮助我,让我知道我做错了吗?
这是我的代码:
def squareFunction(as:Array[Int]): Array[Int] = {
for(i <- as){
as(i) = i * i
}
return as
}
答案 0 :(得分:3)
在(i <- as)
i
中,每个迭代(不是索引)都是Array的元素。你应该做点什么:
def squareFunction(as:Array[Int]): Array[Int] = for(i <- as) yield(i * i)
或
def squareFunction(as:Array[Int]): Array[Int] = as.map(i => i*i)
答案 1 :(得分:0)
使用math.pow()的价值在于您可以将正方形,立方体等...
val x = Array.range(1,9)
val y = x.map(math.pow(_,2))
y: Array[Double] = Array(1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0)
如果您不需要保留在数组中,则:
(1 to 10).map(math.pow(_,2))
res4: IndexedSeq[Double] = Vector(1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0, 100.0)
如果要冗余使用平方功能,请使用函数式编程:
def square(x: Int) = x * x
(1 to 10).map(square)
res6: IndexedSeq[Int] = Vector(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)