我在scala中有一个元组
val captainStuff = ("One", "Two", "Three", "Four", "Five")
我如何迭代循环?在列表和地图中循环很容易。但是如何循环通过元组。
谢谢!
答案 0 :(得分:4)
您可以将其转换为迭代器,如:
val captainStuff = ("One", "Two", "Three", "Four", "Five")
captainStuff.productIterator.foreach(x => {
println(x)
})
这个问题是重复的顺便说一句:
答案 1 :(得分:0)
我如何迭代循环?循环列表和地图很容易。但是如何循环通过元组。
列表和地图是集合。元组不是。迭代(又名“循环”)实际上只对那些元组不是的集合有意义。
元组是产品类型。它们是将多个不同类型值组合在一起组成一个结构的方法。考虑到元组的字段可能有不同的类型,如何你将完全迭代它?元素变量的类型是什么?
如果您熟悉其他语言,则可能熟悉记录的概念(例如Pascal中的RECORD
或C中的struct
)。元组有点像它们,除了字段没有名字。你如何迭代Pascal中的记录或C中的结构?你没有,这没有任何意义。
实际上,您可以将对象视为记录。同样,你如何迭代对象的字段?你没有,这没有任何意义。
注意#1:是的,有时, 有意义迭代对象的字段 iff 你正在进行反思元编程。
注意#2:在Scala中,元组继承自Product
,它具有非类型安全的productIterator
方法,为您提供Iterator[Any]
,允许您迭代元组,但没有类型安全。只是不要这样做。
tl; dr :元组不是集合。你根本就不会迭代它们。期。如果您认为必须这样做,那么您做错了,即您不应该有元组,而是可能是数组或列表。