我正在尝试简化方形通话。
这是最好的方式吗?
(1 to 10).map(x => x*x)
答案 0 :(得分:8)
在某处宣布这个:
def sqr(x: Int) = x * x
之后使用它:
(1 to 10).map(sqr)
答案 1 :(得分:4)
由于平方是对幂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)
答案 2 :(得分:4)
这可能有点矫枉过正,但它相当简单而且很酷:
object SquareApp extends App {
implicit class SquareableInt(i: Int) extends AnyVal { def squared = i*i }
(0 until 10).map(_ squared)
}
implicit
函数会自动将调用squared
的任何Int转换为SquareableInt
对象。