SwiftUI 中使用的反斜杠 (\) 是什么?
What is the backslash(\) used for in SwiftUI?
在名为 "Composing Complex Interfaces" 的 SwiftUI Apple 教程中,该教程使用的反斜杠似乎不是字符串插值或转义字符。这是行:
ForEach(categories.keys.sorted().identified(by: \.self))
这个反斜杠的用途是什么?
下面是包含它的整个结构。
struct CategoryHome: View {
var categories: [String: [Landmark]] {
.init(
grouping: landmarkData,
by: { [=11=].category.rawValue }
)
}
var body: some View {
NavigationView {
List {
ForEach(categories.keys.sorted().identified(by: \.self)) { key in
Text(key)
}
}
.navigationBarTitle(Text("Featured"))
}
}
}
\.self
这是苹果添加的身份密钥路径:
Add the ability to reference the identity key path, which refers to the entire input value it is applied to.
更多信息见proposal。
在 SwiftUI
中,黑斜杠运算符用于引用要在给定块内使用的键路径。
来自苹果:
Add the ability to reference the identity key path, which refers to the entire input value it is applied to.
例如,请看这段代码:
ForEach(["iPhone SE", "iPhone XS Max"].identified(by: \.self)) { deviceName in
LandmarkList()
.previewDevice(PreviewDevice(rawValue: deviceName))
}
here 在遍历数组时,使用 self(here - string) 作为键
现在再举一个例子:我们使用对象数组(不是字符串),现在在这种情况下,用作块内用于迭代的键的键是 id。
List(landmarkData.identified(by: \.id)) { landmark in
LandmarkRow(landmark: landmark)
}
在名为 "Composing Complex Interfaces" 的 SwiftUI Apple 教程中,该教程使用的反斜杠似乎不是字符串插值或转义字符。这是行:
ForEach(categories.keys.sorted().identified(by: \.self))
这个反斜杠的用途是什么?
下面是包含它的整个结构。
struct CategoryHome: View {
var categories: [String: [Landmark]] {
.init(
grouping: landmarkData,
by: { [=11=].category.rawValue }
)
}
var body: some View {
NavigationView {
List {
ForEach(categories.keys.sorted().identified(by: \.self)) { key in
Text(key)
}
}
.navigationBarTitle(Text("Featured"))
}
}
}
\.self
这是苹果添加的身份密钥路径:
Add the ability to reference the identity key path, which refers to the entire input value it is applied to.
更多信息见proposal。
在 SwiftUI
中,黑斜杠运算符用于引用要在给定块内使用的键路径。
来自苹果:
Add the ability to reference the identity key path, which refers to the entire input value it is applied to.
例如,请看这段代码:
ForEach(["iPhone SE", "iPhone XS Max"].identified(by: \.self)) { deviceName in
LandmarkList()
.previewDevice(PreviewDevice(rawValue: deviceName))
}
here 在遍历数组时,使用 self(here - string) 作为键
现在再举一个例子:我们使用对象数组(不是字符串),现在在这种情况下,用作块内用于迭代的键的键是 id。
List(landmarkData.identified(by: \.id)) { landmark in
LandmarkRow(landmark: landmark)
}