Swiftui中init()中的变量前的下划线是什么意思?
momentDate 之前的下划线是什么意思?为什么需要它?
回答
下划线变量名指的是Binding结构的底层存储。这是称为Property Wrappers的语言功能的一部分。
给定一个变量声明,@Binding var momentDate: Date,您可以访问三个变量:
self._momentDate是Binding<Date>结构本身。self.momentDate,相当于self._momentDate.wrappedValue,是Date。在视图正文中呈现日期时,您将使用它。self.$momentDate,相当于self._momentDate.projectedValue,也是Binding<Date>。如果他们需要能够更改日期,您可以将其传递给子视图。
对于Binding中,“预期值”( $)仅仅是self和之间的差异_,并$仅在访问级别。但是,其他属性包装器可能会投射不同类型的值(请参阅语言指南中的@SmallNumber示例)。