如果我有一个以下格式的数组,我如何访问Scala中的内部数组:Array [(String,Array [String])]

时间:2018-03-09 06:19:11

标签: scala

我是Scala的新手并且陷入了一个微不足道的问题。我尝试使用innerArray._1和innerArray(1)来访问数组中的第一个元素,遗憾的是它不起作用。提前致谢。

3 个答案:

答案 0 :(得分:1)

// define an array
scala> val a = Array(("a", Array("b")))
a: Array[(String, Array[String])] = Array((a,Array(b)))

// get first element (might throw if array is empty), use pattern matching instead
scala> a(0)
res1: (String, Array[String]) = (a,Array(b))

// get second tuple element from the first element of an array
scala> a(0)._2
res2: Array[String] = Array(b)

// get that array first element, and so on ...
scala> a(0)._2(0)
res3: String = b

但是,您通常使用模式匹配而不是基于索引的访问。看看mapcase (a, arr) => arr之类的内容。或者类似地:

// if you want first element for example:
scala> a.headOption map { case (a, arr) => arr }
res4: Option[Array[String]] = Some([Ljava.lang.String;@db9ecd)

答案 1 :(得分:0)

你可以这样做:

array.map(tuples => tuples._2.map(innerArrayElement => println(innerArrayElement)))

答案 2 :(得分:0)

_1_2等等,直到_22适用于tuples,而不适用于arrays

假设你有innerArray

val innerArray = Array(("first", Array("str1", "str2")))
//innerArray: Array[(String, Array[String])] = Array((first,[Ljava.lang.String;@7c9bdee9))

然后,您可以访问数组中元组的第一个元素

innerArray.map(x => x._1)
//res0: Array[String] = Array(first)

和第二个元素

innerArray.map(_._2)
//res1: Array[Array[String]] = Array([Ljava.lang.String;@7c9bdee9)

使用(0) 获取第一个元素(1) 以获取第二个元素等等,可以获得数组元素。所以执行以下操作应该会在innerArray

中为您提供第一个tuple2 第一个元素
innerArray(0)._1
//res0: String = first

执行以下操作应该会在{{1}中第一个Tuple2 第二个元素中为您提供数组的第一个元素 }

innerArray