-2

我对这个声明有疑问:

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

internal范围是?

func是声明方法/函数的关键字?

tableView是方法的名称吗?

是什么_tableView?这是参数的名称吗?如果是这样,为什么我们在cellForRowAt没有下划线的情况下需要下划线,假设cellForRowAt也是一个名称?

UITableView参数类型吗?

IndexPath参数类型吗?

indexPath里面有什么cellForRowAt indexPath?为什么有2个字?

UITableViewCell是返回类型,对吧?

很困惑,非常感谢您的帮助!

4

2 回答 2

2

internal范围是?

这是一个访问修饰符。这意味着只有同一模块中的代码才能看到/调用这个符号。

internal如果您不使用它,则它是隐含的,并且主要在您制作框架时有意义 - 链接框架的应用程序只能看到框架的public符号,但框架内的代码可以看到框架中internal的其他符号。(并且框架中一种类型的代码看不到private另一种类型中的符号。)

func是声明方法/函数的关键字?

是的。在 Swift 中,“方法”只是func在类型(类、结构、协议、枚举)范围内声明的一个。

tableView是方法的名称吗?

是的……在某种意义上。它通常被称为函数/方法的“基本名称”——开括号之前的部分(。方法的全名,人们在试图明确引用此方法与其他方法时使用的方法,包括所有参数标签:tableView(_:cellForRowAt:). (不过,在 Swift 中,即使是全名也不是明确的,因为函数/方法可以在参数/返回类型上重载。)

通常,函数名称是一个动词短语,描述函数执行的操作或表征结果,但在委托/数据源协议中另有一个长期约定。(并且此方法来自UITableViewDataSource协议。)在此类协议中,函数的“基本名称”用于命名委托某些操作的对象。

是什么_tableView?这是参数的名称吗?如果是这样,为什么我们在cellForRowAt没有下划线的情况下需要下划线,假设cellForRowAt也是一个名称?

不是_tableView,而是_ tableView——注意空格。下划线在 Swift 中通常意味着“忽略这个”。在这种情况下,下划线代替了参数 label,这意味着此方法的调用者不会为第一个参数写一个:

let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)
                    ^ nothing here, just the value being passed as an argument

UITableView参数类型吗?是IndexPath参数类型吗?

是的。

indexPath里面有什么cellForRowAt indexPath?为什么有2个字?

cellForRowAt是一个参数标签indexPath是参数的内部(对于您的实现)名称。

参数标签由调用您的函数的任何人使用 - 例如,此调用站点如下所示:

let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)

参数名称是您在函数体内引用该值的方式:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    ...
    self.doSomethingWithCellData(indexPath)
    ...
}

UITableViewCell是返回类型,对吧?

正确的。如果您在此方法的实现中不包含return语句,或者return任何不是 aUITableViewCell的语句,编译器就会感到不安。

于 2018-07-19T20:45:36.677 回答
1

您对internalandfunc和是正确的tableView。有下划线是因为在调用函数时不必包含参数名称。你可以做:

tableView(myTableView, cellForRowAt: someIndexPath)

代替:

tableView(tableView: myTableView, cellForRowAt: someIndexPath)

UITableView是与 相同的参数类型IndexPath。当函数被调用时(如上所示),您使用第一个单词cellForRowAt,但函数内部将使用indexPath. 调用函数时,这两个词是为了便于阅读。UITableViewCell是返回类型。

于 2018-07-19T20:17:21.753 回答