Swift可选值在while循环条件下展开

时间:2016-04-26 05:30:07

标签: ios swift linked-list

在下面的代码中,编译器抱怨“可选类型'ListNode的值?'没打开;你的意思是用'!'还是'?'?“

代码用于操作链表:

$search_text = preg_grep($pattern, file($path));

我的问题是如何修复错误,因为cur被声明为可选项?我已经检查了其他解包的答案,但是这个条件在while循环条件下。

1 个答案:

答案 0 :(得分:17)

我强烈认为错误实际发生在cur = cur.next行,因为cur是可选的。 “快速而肮脏”的解决方案将是 强行打开它:

var cur: ListNode? = head
while cur != nil {
    // do something with `cur!` ...

    cur = cur!.next
}

但正确的解决方案是使用可选绑定,但不起作用 仅与if结合使用,但与while

结合使用
var cur: ListNode? = head
while let node = cur {
    // do something with `node` ...

    cur = node.next
}