我认为var值:T = nil导致下面的错误,因为XCode不能将nil值转换为通用类型T.
class Node<T> { var value: T = nil var next: Node init(value: T) { self.value = value self.next = Node() } init() { self.next = Node() } }
错误消息读取
Could not find an overload for ‘_coversion’ that accepts the supplied
arguments
有没有办法为Swift中的变量分配nil值?
您需要将变量声明为可选项:
var value: T? = nil
不幸的是,这似乎触发了一个未实现的编译器功能:
error: unimplemented IR generation feature non-fixed class layout
您可以通过使用NSObject的类型约束声明T来解决它:
class Node<T:NSObject> { var value: T? = nil var next: Node init(value: T) { self.value = value self.next = Node() } init() { self.next = Node() } }