如果有以下格式的数组,如何访问Scala中的内部数组:array[(String,array[String])]
我是Scala新手,在一个琐碎的问题上陷入了困境。我尝试了innerArray.\u 1和innerArray(1)来访问数组中的第一个元素,不幸的是,它不起作用如果有以下格式的数组,如何访问Scala中的内部数组:array[(String,array[String])],scala,Scala,我是Scala新手,在一个琐碎的问题上陷入了困境。我尝试了innerArray.\u 1和innerArray(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 emp
// 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)
你可以做:
array.map(tuples => tuples._2.map(innerArrayElement => println(innerArrayElement)))
\u 1
,\u 2
等等,直到\u 22
只适用于元组
,而不适用于数组
假设您有innerray
as
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
innerArray(0)._2(0)
//res0: String = str1
执行以下操作将在innerArray
innerArray(0)._1
//res0: String = first
innerArray(0)._2(0)
//res0: String = str1