gpt4 book ai didi

swift - 由于信号 : Segmentation Fault: 11,Xcode 9.2 命令失败

转载 作者:行者123 更新时间:2023-11-28 06:05:29 25 4
gpt4 key购买 nike

尽管使用了所有泛型(未显示),程序编译时没有警告并按预期运行。但是,当我尝试通过从协议(protocol)中删除 notUsed 方法来清理它时,我在主题中遇到了编译器错误,并且与类似问题不同的是,没有对任何类或方法的引用来自编译器的长堆栈转储。此外,在编辑器上方,消息:

发生内部错误。源代码编辑器功能受限。正在尝试恢复....”立即出现。

它是简化的,因此是假设的,所以请不要问我通过在解析函数中转换为类型 T 试图实现什么。这是完整的 osx 命令行程序,它运行得非常好,如图所示。不应该吗?如果您有建议,能否也提供代码,因为泛型语法对我来说有点难理解。

public class Future<T> {
init(_ v:T) { value = v }
let value: T
}
protocol DataParserType {
associatedtype ResultType
func notUsed(with data:Data) -> ResultType
func parse<ResultType>(with data:Data) -> Future<ResultType>
}
class JSONParser: DataParserType {
func notUsed(with data:Data) -> Future<Any> { return Future(2.0) }
func parse<T>(with data:Data) -> Future<T> { return Future(45 as! T) }
}

let X: Future<Int> = JSONParser().parse(with: Data())
print(X.value)

最佳答案

我设法重现了你的问题,假设 parse在你的例子中应该在 JSONParser 里面类。

为了满足协议(protocol)的泛型函数,协议(protocol)也必须声明它是泛型的。但是,只需将 <T>在声明中不会解决问题,因为它需要在函数签名的某处使用。关联类型对此没有帮助。

您的选择是:

  1. 更改 parse协议(protocol)中的函数签名是通用的,并使用T在参数的某处。

  2. 不要使用泛型函数。

总有一天 Apple 会了解编译错误和段错误之间的区别,但今天不是那一天。

关于swift - 由于信号 : Segmentation Fault: 11,Xcode 9.2 命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371915/

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