代码之家  ›  专栏  ›  技术社区  ›  Abdelsalam Shahlol Rohit Martires

while循环中的Swift可选绑定

  •  7
  • Abdelsalam Shahlol Rohit Martires  · 技术社区  · 6 年前

    根据 Swift documentation :

    可选择的 如果 虽然 声明 检查optional中的值,并将该值提取到常量或变量中,作为单个操作的一部分。

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

    if let constantName = someOptional {
        statements
    }
    

    我想找一个 可选绑定 使用while循环?

    2 回复  |  直到 4 年前
        1
  •  10
  •   JeremyP    6 年前

    都是一样的

    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
    
        2
  •  0
  •   pacification    6 年前

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

    var value: Int? = 2
    
    while let value = value {
        print(value) // 2
        break
    }