可选绑定,这里的“绑定”这个词到底是啥意思?
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 语句中的临时局部常量
【讨论】:
以上是关于可选绑定,这里的“绑定”这个词到底是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章