#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
относится к объекту, для которого был вызван метод. Здесь он используется как способ передачи этого объекта в другой метод.