gpt4 book ai didi

swift - 泛型、关联类型和 equatable 的问题

转载 作者:行者123 更新时间:2023-11-28 15:33:49 25 4
gpt4 key购买 nike

我做了一个虚拟项目来测试泛型和相关类型。

这是一个协议(protocol)

protocol WordProto : Equatable { // BTW not sure if I should put Equatable here

associatedtype WordAlias : Equatable // or here

var homonyms: [WordAlias] { get }

}

这是一个类

class SomeFrameworkClass<T : WordProto> {

typealias SomeWord = T

func testClass(word: SomeWord) {

if word.homonyms.contains(word) {

}

}

}

所以这不会在 contains 上编译,这是错误:无法使用 T 类型的参数列表调用包含

不知道如何解决这个问题,感谢您的帮助!

最佳答案

T 和 WordAlias 可以是不同的类型。这应该被指定。

恕我直言,这应该可行:

protocol WordProto {

associatedtype WordAlias: Equatable

var homonyms: [WordAlias] { get }

}

class SomeFrameworkClass<T: WordProto> where T.WordAlias == T {

func testClass(word: T) {

if word.homonyms.contains(word) {

}
}
}

或与 self 引用:

protocol WordProto: Equatable {

var homonyms: [Self] { get }

}

class SomeFrameworkClass<T: WordProto> {

func testClass(word: T) {

if word.homonyms.contains(word) {

}
}
}

关于swift - 泛型、关联类型和 equatable 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494961/

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