Что на самом деле делает "\ .self" в swift / swiftUI?
Я не совсем понимаю, что именно \.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
для каждого list
элемент как каждый элемент в массиве чисел? Поправьте меня, если не прав - но каждыйid
быть установлен как что угодно Int
есть в каждой записи массива чисел? Если да, то что значит\
действительно делать при наборе текста \.self
и что делает .self
на самом деле делать в сочетании с \
?
2 ответа
. ключевые пути. ForEach требует, чтобы каждый объект был уникальным. дайте им уникальные идентификаторы с id:.self. если ваши объекты идентифицируются, вам не нужно.
id: .self указывает Swift использовать в качестве уникального идентификатора (keypath) хэш объекта. Это объясняет, почему используется имя «я». id: .self особенно полезен для основных типов Swift, таких как Integer и String. С одной стороны разработчик не может добавить к ним уникальный id. С другой стороны, все они хешируются, поэтому мы можем использовать id: .self. id: .self полезен не только для ForEach, но и для List.