gpt4 book ai didi

arrays - 追加到 Swift 中的通用数组

转载 作者:行者123 更新时间:2023-11-30 10:06:08 25 4
gpt4 key购买 nike

我有一个名为 Foo 的协议(protocol)和一个名为 Bar 的结构。 Bar 符合 Foo

protocol Foo {}    
struct Bar: Foo {}

Bar 实例附加到 Bar 数组可以按预期工作。

var array = [Bar]()
array.append(Bar())

现在,我有一个名为 Baz 的通用结构,它使用符合 Foo 的类型(例如 Bar)进行初始化。

struct Baz<T: Foo> {
private(set) var array = [T]()

init() {
if T.self is Bar.Type {
// Error: Cannot invoke 'append' with an argument list of type (Bar)
array.append(Bar())
}
}
}

尝试追加到数组会导致以下错误:

Cannot invoke 'append' with an argument list of type (Bar)

为什么这没有按预期工作?

顺便说一句,用例是这样的:

let bazBarStack = Baz<Bar>().array
let bazQuxStack = Baz<Qux>().array

最佳答案

您需要将对象存储在数组中,且类型为 T。因此,您应该使用 as 进行强制转换! T:

struct Baz<T: Foo> {
private(set) var array = [T]()

init() {
if T.self is Bar.Type {
array.append(Bar() as! T)
}
}
}

关于arrays - 追加到 Swift 中的通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858872/

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