Swiftui 中 init() 中变量前的下划线是啥意思?

Posted

技术标签:

【中文标题】Swiftui 中 init() 中变量前的下划线是啥意思?【英文标题】:What does the underscore mean before a variable in Swiftui in an init()?Swiftui 中 init() 中变量前的下划线是什么意思? 【发布时间】:2020-12-09 01:23:00 【问题描述】:

momentDate 之前的下划线是什么意思?为什么需要它?

【问题讨论】:

请粘贴实际代码,不要截图。 【参考方案1】:

带下划线的变量名指的是Binding 结构的底层存储。这是名为Property Wrappers 的语言功能的一部分。

给定一个变量声明@Binding var momentDate: Date,您可以访问三个变量:

self._momentDateBinding<Date> 结构本身。 self.momentDate,相当于self._momentDate.wrappedValue,是一个Date。在视图主体中呈现日期时,您将使用它。 self.$momentDate,相当于self._momentDate.projectedValue,也是Binding<Date>。如果他们需要能够更改日期,您可以将此传递给子视图。

对于Binding,“预计值”($) 只是self_$ 之间的区别仅在access level 中。但是,其他属性包装器可能会投射不同类型的值(参见 language guide 中的 @SmallNumber 示例)。

【讨论】:

解释得很好,谢谢。 当某些事情解释得这么清楚时,就没有更多的 cmets 了 :-) 非常清楚,谢谢!

以上是关于Swiftui 中 init() 中变量前的下划线是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何在 init 中使用 fetchRequest 更新数据

选择器更改时,SwiftUI 环境变量中的字符串插值未更新

SwiftUI 闭包更新 @State init

SwiftUI 九

python 如何修改双下划线变量

知识点:类