可选绑定,这里的“绑定”这个词到底是啥意思?

Posted

技术标签:

【中文标题】可选绑定,这里的“绑定”这个词到底是啥意思?【英文标题】: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。将这两件事“绑定”在一起?

【问题讨论】:

【参考方案1】:

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

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

let x = 1

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

【讨论】:

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

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

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

【讨论】:

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

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

【讨论】:

以上是关于可选绑定,这里的“绑定”这个词到底是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

JS中的“绑定”一词是啥意思?

Javascript中的绑定是啥意思?

typescript是啥意思

Walter Bright 使用了“冗余”这个词……或者“这到底是啥意思?”

平台和api这两个词到底是啥意思?

为啥使用可选绑定?