如何让元组符合序列? [关闭]

Posted

技术标签:

【中文标题】如何让元组符合序列? [关闭]【英文标题】:How to get a tuple to conform to sequence? [closed] 【发布时间】:2021-10-18 21:29:53 【问题描述】:

我在 Swift 5 中有以下代码:

func iceCreamFlavors() -> (String, String, String) 
    return ("Chocolate", "42", "Vanilla")


for index in iceCreamFlavors()
    print(index)

我只是想遍历返回的元组中的元素。但是,我收到以下错误:error: for-in loop requires '(String, String, String)' to conform to 'Sequence'

如何让元组符合顺序?我需要扩展 Sequence 协议吗?如果是这样,我应该怎么做?

【问题讨论】:

你不可能知道这个函数返回什么。 【参考方案1】:

在您的示例函数中,您将返回 3 个元素,并且没有其他选项是可能的。如果您想要不同的数字,请使用 [String] 作为结果,即

func iceCreamFlavors() -> [String] 
    ["Chocolate", "42", "Vanilla"]


返回一个数组将允许你迭代它的元素:

let flavors = iceCreamFlavors()
print(flavors.count)
for flavor in flavors 
    print(flavor)

【讨论】:

如果我想返回不同的数据类型怎么办?我想我需要一个元组,对吧? @purpleprince 你可以,但Any 没有计数属性并且/或者符合序列以能够迭代其元素。如果您需要返回不同的类型,您可以创建一个泛型方法。但是考虑到您是初学者,您将更难实施/理解它的工作原理。 @purpleprince 这是一个 XY 问题。你到底想达到什么目的? 我有一个动态函数,它 1) 返回不同的数据类型,2) 可以返回 1 到 10 个元素。由于每次返回不同数量的元素,我希望能够在事先不知道元素数量的情况下迭代每个元素。 (感谢所有帮助!) @LeoDabus,我对泛型有点熟悉......我的泛型方法必须符合什么才能使其可迭代?

以上是关于如何让元组符合序列? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

列表,元组,集合和字典之间有什么区别? [关闭]

如何正确地将元组序列化为键字典

微信之初学者:不可变的序列--元组

python中啥是序列,列表,元组,字符串,索引,区别是啥?

如何在python中创建给定结构的元组[关闭]

如何检查列表中是不是有元组?