我正在尝试简化方形呼叫。
这是最好的方法吗?
(1 to 10).map(x => x*x)
在某处声明一次:
def sqr(x: Int) = x * x
然后像这样使用它:
(1 to 10).map(sqr)
由于平方是 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)
这可能有点矫枉过正,但它相当简单而且很酷:
object SquareApp extends App {
implicit class SquareableInt(i: Int) extends AnyVal { def squared = i*i }
(0 until 10).map(_ squared)
}
该implicit
函数会自动将调用的任何 Int临时squared
转换为 对象。SquareableInt