Scala-一步计算两个变量

时间:2018-07-04 09:28:48

标签: scala apache-spark bigdata

我要分配两个变量:

val a: Seq[Int] = schema.map(_.getLong(key="width").toInt)

val b: Seq[String] = schema.map(_.name)

我在不同的地方使用这些变量。

当我从相同的架构进行计算时,我需要将其与一个变量合并为一个步骤,这样我就可以一次进行计算。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

  

I need to merge this into one step with one variables so that I can compute this in one attempt.

您可以将

创建为Seq[Tuple2[Int, String]]
val c: Seq[(Int, String)] = schema.map(x => (x.getLong(key="width").toInt, x.name))

使c._1等于您的 a元素,而c._2等于b的元素

或者换句话说

c.map(_._1)等于a c.map(_._2)等于b

答案 1 :(得分:0)

val ab= schema.map(i=> (i.getLong(key="width").toInt),i.name))

将为您提供两个值的元组

如果希望他们命名,可以

case class S(name : String, width: Int)
val ab = schema.map(i=> S(i.name,i.getLong(key="width").toInt))