如何将元组或整数列表与 Scala 中的一个因子相乘

How to multiply a tuple or a list of integers with a factor in Scala

在 Scala 2 中,我有一个这样的元组:

val direction = (2,3) 

这个值direction我想乘以一个Int因子f以获得一个新的元组

(2 * f, 3 * f)

所以如果 f=4 我正在寻找结果 (8,12)

我尝试了明显的候选 *:

(2,3) * f

* 似乎不是为这些类型设计的。

这个怎么样?

// FUNCTION
object TupleProduct extends App {

  implicit class TupleProduct(tuple2: (Int, Int)) {
    def * : Int => (Int, Int) = (f: Int) => {
      (tuple2._1 * f, tuple2._2 * f)
    }
  }

  val direction = (2, 3)

  print(direction * 4)
}

// METHOD
object TupleProduct extends App {

  implicit class TupleProduct(tuple2: (Int, Int)) {
    def *(f: Int):(Int, Int) = {
      (tuple2._1 * f, tuple2._2 * f)
    }
  }

  val direction = (2, 3)

  print(direction * 4)
}

还有TupleNproductIterator:

(1,2,3,4,5)
  .productIterator
  .map { case n: Int => n * 2 }
  .toList

这不是 return 另一个元组,但可以让您轻松迭代所有元素,而无需添加任何新库。

productIterator returns Iterator[Any] 所以你必须使用模式匹配。