Что означает аргумент self при вызове функции?

#swift

#swift

Вопрос:

В приведенном ниже вызове функции .didSelectRating на что указывает self аргумент (?)? Что именно это такое?

Я видел это раньше несколько раз и не знаю, как узнать об этом синтаксисе, потому что я не знаю, что искать. Я понимаю, что rating слово во втором аргументе является именем аргумента, но я не понимаю, как первое слово перед запятой инкапсулирует как имя, так и аргумент.

Что это называется и что оно делает? self Здесь используется единственное слово или здесь может быть что-то еще?

 protocol RatingPickerDelegate {
    func preferredRatingSymbol(picker: RatingPicker) -> UIImage?
    func didSelectRating(picker: RatingPicker, rating: Int)
    func didCancel(picker: RatingPicker)
}


 func selectRating(selectedRating: Int) {
        delegate?.didSelectRating(self, rating: selectedRating)
        // Other logic related to selecting a rating
    }
  

Комментарии:

1. Требование к меткам аргументов изменилось с Swift 2 на Swift 3. Я предполагаю, что этот код — Swift 2; см. github.com/apple/swift-evolution/blob/master/proposals /… для получения дополнительной информации.

Ответ №1:

«self» ссылается на текущий объект. Передача его в качестве аргумента означает, что первый аргумент является объектом этого класса. ключевое слово «self» является эквивалентом «this» в Java, javascript или c, если это поможет вам определить его или найти.

О том, почему для первого аргумента не требуется имя, язык swift был определен таким образом. Думаю, он берет его из objectice-c, где вы указываете name для каждого аргумента, кроме первого.

Ответ №2:

self относится к объекту, для которого был вызван метод. Здесь он используется как способ передачи этого объекта в другой метод.