如何返回包含每个数字的平方的数组?

时间:2016-02-04 00:34:29

标签: arrays scala

我是Scala的新手,不知道如何返回包含每个数字的平方的数组。有人可以帮助我,让我知道我做错了吗?

这是我的代码:

def squareFunction(as:Array[Int]): Array[Int] = {

for(i <- as){
  as(i) = i * i
 }
return as

}

2 个答案:

答案 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)