【发布时间】:2015-01-15 02:45:31
【问题描述】:
我不确定为什么 Swift 在我的 if 语句检查 list1 != nil 时会抱怨 list1 = list1!.next 意外发现 nil。谁能解释为什么检查 list1 != nil 是不够的?我试过把它改成
if list1 {
list1 = list1!.next
}
但它建议我使用 != nil 进行检查
这是我的代码:
class Node {
var data: Int
var next: Node?
init (data: Int) {
self.data = data
}
}
func addReversed (var list1: Node?, var list2: Node?) -> Node {
var carry = 0
var head: Node? = nil
var prev: Node? = nil
while list1 != nil || list2 != nil {
var newNode = addNode(list1, list2, &carry)
appendNode(head, prev, newNode)
if list1 != nil {
list1 = list1!.next
}
if list2 != nil {
list2 = list2!.next
}
}
if carry > 0 {
var carryNode = Node(data: carry)
appendNode(head, prev, carryNode)
}
return head!
}
【问题讨论】:
-
你不能说
if list1。它不是布尔值。你不能像那样进行零检查。 (你可以在早期的 Swift 中使用,但他们取消了它,这是正确的。) -
您能多描述一下 Node 吗?
-
您正在返回
head!,但除了 nil 之外,您从未为其分配任何内容 -
修改另一个函数中的变量不会影响这个函数中的局部变量
-
我认为你的
appendNode函数有缺陷。