我不完全理解以下代码中\.self
的作用:
struct ContentView: View {
@State private var numbers = [Int]()
@State private var currentNumber = 1
var body: some View {
VStack {
List {
ForEach(numbers, id: \.self) {
Text("\($0)")
}
}
Button("Add Number") {
self.numbers.append(self.currentNumber)
self.currentNumber += 1
}
}
}
}
我正在遵循这个网址:https://www.hackingwithswift.com/books/ios-swiftui/deleting-items-using-ondelete。我现在对这种语言只有很基本的了解,因此可能无法理解高级说明,所以希望提供非常简单的说明或具有详细描述的类比。我认为它是将每个列表项的id设置为数字数组中的每个项目?如果我错了,请纠正我 - 但是每个id是否都设置为数字数组中每个条目中的整数? 如果是这样,那么当键入“ \ .self”时,“\”实际上是做什么的,与“\”相结合,“.self”实际上是做什么的?
\.self
的Int(1)
将给出Int(1)
,即\.self
意味着 self,字面意思为自己。 - Asperi\ .self
符合哈希协议(显然数组是符合的),那么Swift将自动创建一个哈希值作为id来使用。当你使用ForEach(_, id: hashable)
时,Swift会隐式地知道如何处理这个哈希值。 - Super Noob