我认为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()
- }
- }