gpt4 book ai didi

swift - 类型转换与 swift 中的通用协议(protocol)冲突?

转载 作者:行者123 更新时间:2023-11-30 12:43:12 24 4
gpt4 key购买 nike

我无法快速解决泛型(和泛型协议(protocol))的类型冲突。当尝试在运算符函数中调用类函数时,我不断收到此错误。

Cannot convert value of type 'Chain<Initial, E.Initial, E>'to expected argument of type 'Chain<Initial, E.Initial, E>'

下面是运算符函数签名和主体。该错误被声明为向类函数提供“c”的类型问题。

public func +<Initial, E : Bindable>(c: Chain<Initial, E.Initial, E>, e: E) -> Chain<Initial, E.Result, E> {
return Chain.append(chain: c, element: e)
}

Chain 类追加函数的函数签名(与运算符函数签名相同)是;

static func append<Initial, E : Bindable>(chain : Chain<Initial, E.Initial, E>, element: E) -> Chain<Initial, E.Result, E>

Bindable 协议(protocol)声明为;

public protocol Bindable {
associatedtype Initial
associatedtype Result
}

类型是相同的,运算符只是静态类函数的语法糖。我是否不正确地使用通用协议(protocol)?或者这是一个类型系统错误?我必须在哪里将类函数代码复制到操作符代码中?

最佳答案

回答了我自己的问题:我只需要为类函数调用提供类型签名 Chain.append(chain: c, element: e)。

这通过为方法调用提供上下文解决了问题。之前它不知道应该返回什么类型。

关于swift - 类型转换与 swift 中的通用协议(protocol)冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994532/

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