如何访问scala元组的值

时间:2018-06-15 09:24:13

标签: scala tuples

我有一系列具有值和力量2的元组:

val fields3: Seq[(Int, Int)] = Seq((3, 9), (5, 25))

我想知道的是,当我创建没有使用foreach的对象时,是否有办法直接访问同一元组的值:

val fields3: Seq[(Int, Int)] = Seq((3, 3 * 3 ), (5, 5 * 5))

我的想法是这样的:

val fields3: Seq[(Int, Int)] = Seq((3, _1 * _1 ), (5, _1 * _1)) //like this doesn't compile

2 个答案:

答案 0 :(得分:2)

您可以这样做:

Seq(2,3,4).map(i => (i, i*i))

答案 1 :(得分:0)

您可以将元组包含在案例类中:

case class TupleInt(base: Int) {
  val tuple: (Int, Int) = (base, base*base)
}

然后你可以像这样创建序列:

val fields3: Seq[(Int, Int)] = Seq(TupleInt(3), TupleInt(5)).map(_.tuple)

我更喜欢@ geek94给出的答案,这对你想做的事情来说太冗长了。

同样有效的表达方式是:

val fields3: Seq[(Int, Int)] = Seq(3, 5).map(i => i -> i*i)