我是Scala的新手并且陷入了一个微不足道的问题。我尝试使用innerArray._1和innerArray(1)来访问数组中的第一个元素,遗憾的是它不起作用。提前致谢。
答案 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
但是,您通常使用模式匹配而不是基于索引的访问。看看map
和case (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
innerArray(0)._1
//res0: String = first
执行以下操作应该会在{{1}中第一个Tuple2 的第二个元素中为您提供数组的第一个元素 }
innerArray