while循环中的Swift可选绑定

时间:2018-01-18 10:56:21

标签: swift

根据Swift documentation

  

可选绑定可与 if while 语句一起使用,以检查可选内的值,并将该值提取为常量或变量,作为单个操作的一部分。

该文档仅显示使用if语句的可选绑定示例:

 if let constantName = someOptional {
  statements
  }

我正在寻找使用while循环可选绑定的示例吗?

2 个答案:

答案 0 :(得分:1)

它是相同的

while let someValue = someOptional
{
    doSomethingThatmightAffectSomeOptional(with: someValue)
}

以下是迭代链表的具体示例。

class ListNode
{
    var value: String
    var next: ListNode?

    init(_ value: String, _ tail: ListNode?)
    {
        self.value = value
        self.next = tail
    }
}

let list = ListNode("foo", ListNode("bar", nil))

var currentNode: ListNode? = list
while let thisNode = currentNode
{
    print(thisNode.value)
    currentNode = thisNode.next
}

// prints foo and then bar and then stops

答案 1 :(得分:0)

我认为使用while let ...的优势是无限循环,可以检查某些变量是否有任何变化。但这很奇怪。对于这种工作,您应该使用didSet。或者其他好例子是List数据结构。无论如何,这是一个例子:

var value: Int? = 2

while let value = value {
    print(value) // 2
    break
}