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

Nig*_*awk 6 xcode swift swiftui

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

在此处输入图片说明

jtb*_*des 13

下划线变量名指的是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和之间的差异_,并$仅在访问级别。但是,其他属性包装器可能会投射不同类型的值(请参阅语言指南中@SmallNumber示例)。

  • 解释得很好,谢谢。 (3认同)