【问题标题】:Swift optional value Unwrap in while loop conditionSwift 可选值在 while 循环条件中展开
【发布时间】:2016-04-26 05:30:06
【问题描述】:

在下面的代码中,编译器抱怨“可选类型'ListNode的值?'没有打开;你是不是要使用“!”还是‘?’?”

代码用于操作链表:

var cur: ListNode? = head
while (cur != nil){ // this line has error
    cur = cur.next
}

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

【问题讨论】:

  • 无法复制...

标签: ios swift linked-list


【解决方案1】:

我强烈认为错误实际上发生在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
}

【讨论】:

  • 你是对的。更新到 swift 2.2 后,它指向正确的错误位置。没有检查它之前是哪个 swift 版本。谢谢!
猜你喜欢
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2022-01-26
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2015-02-27
相关资源
最近更新 更多