объяснение функции tabelView - PullRequest
       5

объяснение функции tabelView

0 голосов
/ 10 сентября 2018

Я столкнулся со следующей функцией при изучении UItableView:

func tableView(_ tableView: UITableView, ....

Я никогда не сталкивался с функцией, использующей свое собственное имя в разделе переменных.

Кто-нибудь может мне это объяснить?

1 Ответ

0 голосов
/ 10 сентября 2018

В вашей функции первое tableView - это имя функции, второе - имя, присвоенное одному из ее параметров.

Простая функция может быть объявлена ​​следующим образом:

  1. ключевое слово func
  2. он дал название функции
  3. открывающая скобка (
  4. имена параметров (если есть), каждое из которых следует за двоеточием :, а затем его тип, все разделены запятыми ,
  5. закрывающая скобка )
  6. Если эта функция возвращает значение, то:

    • стрелка ->, которая является просто - и >
    • тип возврата
  7. открывающаяся фигурная скобка {

  8. Вот тело вашей функции
    • Если эта функция возвращает значение, используйте ключевое слово return, за которым следует значение, которое вы хотите вернуть.
  9. Наконец закрывающая скобка }

Это определило бы подпись этой функции: что делает функцию из другой функции - его имя, - количество и названия его параметров и их типы, - И его тип возврата.

(Мы могли бы добавить объект, которому он принадлежит, если он бросает или нет, ...)

Вот пример функции, которая принимает String и возвращает другую. Вы можете попробовать это на детской площадке в Xcode:

//Declare the function
func sayHiTo(person: String) -> String {
    let greeting = "Hello " + person
    return greeting
}
//Invoke it
sayHiTo(person: "Sara")     //"Hello Sara"

Вы видите, как мы вызывали функцию в последней строке: sayHiTo(person: "Sara")? Для вызова функции выполните следующие действия:

  • поставить название функции (аналогично 2. из предыдущего списка)
  • открывающая скобка (
  • имена параметров (если есть), за каждым из которых следует двоеточие :, а затем его тип.

Мы могли бы использовать _ перед именем параметра, если мы хотим вызвать функцию без указания параметра name:

func laugh(_ s: String) -> String {
    return s + s
}

laugh("Ha")   //HaHa

И ничто не пойдет не так, если имя параметра совпадает с именем функции:

func name(name: String) {
    print(name)
}

name(name: "Katie")  //prints Katie in the console

Теперь давайте посмотрим на сигнатуру этой функции:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

Как видите,

  • tableView - название функции
  • Второй tableView - это имя его первого параметра
  • Подчеркивание _ означает, что вам не нужно указывать имя параметра при вызове этой функции
  • UITableView - это тип первого параметра
  • cellForRowAt - это внешнее имя второго параметра
  • indexPath - это внутреннее имя второго параметра
  • IndexPath - тип второго параметра
  • -> UITableViewCell означает, что эта функция возвращает экземпляр типа UITableViewCell

Вопрос, который вы можете задать: зачем использовать одно и то же имя функции и параметра? И ответ:

  • Это соглашение, что все источники данных работают в UITableViewDataSource. Это легче запомнить и становится еще удобнее с функцией автозаполнения Xcode.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...