Что на самом деле делает "\ .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.

Другие вопросы по тегам