我认为var value: 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()
}
}
错误消息为
找不到接受提供的'_coversion'的重载 参数
有没有办法在Swift中为变量赋值nil
?
答案 0 :(得分:20)
您需要将变量声明为可选:
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()
}
}
答案 1 :(得分:0)
尝试使用
var value: T? = nil
问号使变量成为可选变量,这意味着它可以具有值或为零。