【问题标题】:Optional Binding, what exactly the word "Binding" means here?可选绑定,这里的“绑定”这个词到底是什么意思?
【发布时间】:2016-06-14 20:25:12
【问题描述】:

可选绑定 是一种找出可选是否包含值的方法,如果是,则使该值可用作临时常量或变量。

var possibleNumber: Int? = 123

if let actualNumber = Int(possibleNumber){
    print("\"possibleNumber\" has an integer value of \(actualNumber)")
} else {
    print("\"possibleNumber\" could not be converted to an integer")
}

问题 绑定是指将有效值赋给临时常量/变量的动作吗? IE。将这两件事“绑定”在一起?

【问题讨论】:

    标签: swift optional-binding


    【解决方案1】:

    绑定是否意味着将有效值分配给临时常量/变量的操作? IE。将这两件事“绑定”在一起?

    是的。基本上,将值分配给变量名称是一种绑定——它将名称“绑定”到值。所以即使这是一个绑定:

    let x = 1
    

    if let 的特殊之处在于,只有当值是可以安全解包的 Optional 时才会发生绑定(也就是说,它不是 nil)。如果无法安全解包,则不会解包,也不会发生绑定(if 条件失败)。

    【讨论】:

    • 很高兴知道“绑定”不仅适用于Optional,定义也是一种绑定。非常感谢您的解释
    • 这不仅仅是绑定,它也是内存分配(在堆栈上)和初始化;)
    • @matt OMG 我是多么愚蠢!我以前问过这个问题。我需要安静的反省。
    • @AlexanderMomchliov 以防 OP 删除他的问题,为什么不把你的答案移到这里呢?这样它就可以继续存在,包括您关于“不仅仅是绑定”的观点。
    • 现在在移动设备上,我很快就会这样做。有没有办法查看您对已删除问题的回答?
    【解决方案2】:

    当您将现有数据/代码关联到一个新标识符(名称)以引用它时,您就是 "binding" 它与该标识符。

    还有“条件绑定”,例如当您使用if let 时。它仅在有条件的情况下才绑定可选的内容。

    【讨论】:

    • 并补充我的答案:请记住,变量标识符仅对我们作为高级编程语言的程序员存在。代码编译的那一刻,它们被剥离,数据直接由其内存地址引用。因此,可选绑定可能甚至不会改变编译后的代码输出。它只是为了验证类型安全而存在
    【解决方案3】:

    我们使用可选绑定(使用 if let)来检查可选是否包含该值。如果该值存在,那么我们将该值绑定到仅存在于 if 语句中的临时局部常量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多