如何让元组符合序列? [关闭]
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,我对泛型有点熟悉......我的泛型方法必须符合什么才能使其可迭代?以上是关于如何让元组符合序列? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章