gpt4 book ai didi

ios - 如何在 Swift 中传递类型为 "Sequence"的 "T"作为参数?

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:51 25 4
gpt4 key购买 nike

假设我有一个函数接受一系列“Person”对象。序列可以是一个简单的数组,或者 RealmSwift 的结果,或者列表:

// A simple array
func someFunction(people: [Person]) {

}

// Result
func someFunction(people: Result<Person>) {

}

// List
func someFunction(people: List<Person>) {

}

我不想拥有这 3 个函数,而只想拥有 1 个函数,它采用“Person”对象的通用序列,如下所示:

func someFunction(people: Sequence<Person>) {

}

这样,我可以将数组、结果或列表传递给函数,而不必担心类型不匹配。但显然这在 Swift 中是不允许的。那我该怎么做呢?

最佳答案

编辑Xcode 14.1 和 Swift 5.7.1 今天发布了,有了这些版本,您现在只需:

func someFunction(people: some Sequence<Person>) { ... }

原答案如下。

--

您可以使用 where 子句来完成此操作。在此处阅读有关 where 子句的信息:

https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID192

要回答您的特定问题,您可以创建一个通用的 Sequence 约束并像这样约束它的 Element:

func someFunction<S: Sequence>(people: S) where S.Element == Person { ... }

关于ios - 如何在 Swift 中传递类型为 "Sequence"的 "T"作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53166091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com