如何将数组转换为元组?

28

我有一个来自Java JPA的Array[Any],其中包含不同类型的东西(在这种情况下为两个,但可以考虑任何一小组)。我想将它们表示为元组。

我有一些快速脏代码,想知道如何改进并使其更通用。

val pair = query.getSingleOrNone // returns Option[Any] (actually a Java array)
pair collect { case array: Array[Any] =>
  (array(0).asInstanceOf[MyClass1], array(1).asInstanceOf[MyClass2]) }

这回答解决了你的问题吗?从数组中提取值到元组 - Flow
4个回答

38

这个怎么样?

val pair = query.getSingleOrNone
pair collect { case Array(x: MyClass1, y: MyClass2, _*) => (x,y) }
// result would be Option[(MyClass1, MyClass2)]

24

使用 map { case Array(f1,f2) => (f1,f2) }

这里有一个例子:

Array( "CA:California", "WA:Washington", "OR:Oregon").
  map(s => s.split(":")).
  map { case Array(f1,f2) => (f1,f2)}

13

我的解决方案如下:

val loginValues = line.split(",")  // return an Array

val (ip, date, action, username) = (loginValues(0), loginValues(1).toLong, loginValues(2), loginValues(3))

4

您可以使用Tuple.fromArray。适用于Scala 3.0.2,未经过早期版本的测试。

scala> val a = Array("a", "b")
val a: Array[String] = Array(a, b)

scala> Tuple.fromArray(a)                                                        
val res1: Tuple = (a,b)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接