我陷入了Scala中一个令人尴尬的简单问题(我是新手)。
如何从"2"
中的这样一个结构中检索第二个(比如说)元素(Scala
):
scala> val a = ("1", "2", "3")
a: (String, String, String) = (1,2,3)
答案 0 :(得分:5)
处理元组时,您可以执行以下任一操作:
val res = a._2
val (_, res, _) = a // sets res to "2"
val res = a match { case (_, i, _) => i } // same as above, just longer
// if your tuple appears in a list you can do something like this:
lst.map{ case (_, i, _) => /* do stuff with i */ }
答案 1 :(得分:3)
处理元组时,请尝试使用以下表达式:a._2
答案 2 :(得分:1)
您可以使用getClass
查看该班级的名称是scala.Tuple3
。
scala> a.getClass.getName
res0: java.lang.String = scala.Tuple3
很遗憾,Tuple3
的文档隐藏在API中,但您可以通过此直接链接访问它。
http://www.scala-lang.org/api/current/#scala.Tuple3
3个元素的元组; scala.Product3的规范表示。
的元素1
_1
- 此Tuple3
的元素2
_2
- 此Tuple3
的元素3
_3
- 此Tuple3
或者,您可以在REPL中使用制表符完成功能来查看a
的公开成员列表。
scala> a.
_1 _2 _3
asInstanceOf canEqual copy
isInstanceOf productArity productElement
productElements productIterator productPrefix
toString zip zipped
因此,答案是:您可以直接访问_2
字段。
scala> a._2
res1: java.lang.String = 2
虽然这通常不鼓励使用模式匹配。
scala> a match { case (x, y, z) => y }
res2: java.lang.String = 2