Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果有以下格式的数组,如何访问Scala中的内部数组:array[(String,array[String])]_Scala - Fatal编程技术网

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

如果有以下格式的数组,如何访问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

我是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 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