如何在scala中循环元组

时间:2017-06-22 14:09:52

标签: scala loops

我在scala中有一个元组

val captainStuff = ("One", "Two", "Three", "Four", "Five")

我如何迭代循环?在列表和地图中循环很容易。但是如何循环通过元组。

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以将其转换为迭代器,如:

val captainStuff = ("One", "Two", "Three", "Four", "Five")

captainStuff.productIterator.foreach(x => {
  println(x)
})

这个问题是重复的顺便说一句:

Scala: How to convert tuple elements to lists

答案 1 :(得分:0)

  

我如何迭代循环?循环列表和地图很容易。但是如何循环通过元组。

列表和地图是集合。元组不是。迭代(又名“循环”)实际上只对那些元组不是的集合有意义。

元组是产品类型。它们是将多个不同类型值组合在一起组成一个结构的方法。考虑到元组的字段可能有不同的类型,如何你将完全迭代它?元素变量的类型是什么?

如果您熟悉其他语言,则可能熟悉记录的概念(例如Pascal中的RECORD或C中的struct)。元组有点像它们,除了字段没有名字。你如何迭代Pascal中的记录或C中的结构?你没有,这没有任何意义。

实际上,您可以将对象视为记录。同样,你如何迭代对象的字段?你没有,这没有任何意义。

注意#1:是的,有时, 有意义迭代对象的字段 iff 你正在进行反思元编程。

注意#2:在Scala中,元组继承自Product,它具有非类型安全的productIterator方法,为您提供Iterator[Any],允许您迭代元组,但没有类型安全。只是不要这样做。

tl; dr :元组不是集合。你根本就不会迭代它们。期。如果您认为必须这样做,那么您做错了,即您不应该有元组,而是可能是数组或列表。