9

我正在尝试简化方形呼叫。

这是最好的方法吗?

(1 to 10).map(x => x*x)
4

3 回答 3

9

在某处声明一次:

def sqr(x: Int) = x * x

然后像这样使用它:

(1 to 10).map(sqr)
于 2013-07-16T21:19:22.623 回答
8

由于平方是 2 的幂次方,因此考虑以下两种方法是有意义的:

scala> (1 to 10).map(math.pow(_, 2))
res6: scala.collection.immutable.IndexedSeq[Double] = Vector(1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0, 100.0)

scala> (1 to 10).map(BigInt(_).pow(2))
res7: scala.collection.immutable.IndexedSeq[scala.math.BigInt] = Vector(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)
于 2013-07-16T21:58:44.870 回答
4

这可能有点矫枉过正,但它相当简单而且很酷:

object SquareApp extends App {
    implicit class SquareableInt(i: Int) extends AnyVal { def squared = i*i }

    (0 until 10).map(_ squared)
}

implicit函数会自动将调用的任何 Int临时squared转换为 对象。SquareableInt

于 2013-07-17T05:04:01.623 回答