我对此声明有疑问
Log4net context properties
RollingFileAppender
是范围吗?
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
...
<file type="log4net.Util.PatternString" value="D:\Medupi logs\%property{appIdentifier}.log" />
...
</appender>
是声明方法/功能的关键字吗?
internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
是方法的名称吗?
什么是internal
?这是参数的名称吗?如果是这样,假设func
也是一个名称,为什么tableView
没有下划线时为什么需要下划线?
_tableView
是参数类型吗?
cellForRowAt
是参数类型吗?
cellForRowAt
中的UITableView
是什么?为什么有两个字?
IndexPath
是返回类型,对吧?
很困惑,非常感谢您的帮助!
答案 0 :(得分:2)
internal
是范围吗?
这是访问修饰符。这意味着只有同一模块中的代码才能看到/调用此符号。
internal
是隐式的(如果不设置),其含义主要是在创建框架时-链接框架的应用只能看到框架的public
符号,但其中的代码框架可以在框架中看到其他internal
符号。 (而且框架中一种类型的代码看不到另一种类型内的private
符号。)
func
是声明方法/功能的关键字吗?
是的。在Swift中,“方法”只是在类型(类,结构,协议,枚举)的范围内声明的func
功能。
tableView
是方法的名称吗?
是的。它通常被称为函数/方法的“基础名称”,即开括号(
之前的部分。人们在尝试明确地引用此方法时会使用该方法的全名,其中包括所有参数标签:tableView(_:cellForRowAt:)
。 (尽管,全名在Swift中也并非明确,因为函数/方法可以在参数/返回类型上重载。)
通常,函数名称是动词短语,用于描述函数执行的操作或描述结果的特征,但是在委托/数据源协议中则存在长期的约定。 (并且此方法来自UITableViewDataSource
协议。)在此类协议中,函数的“基本名称”用于命名委派某些操作的对象。
什么是
_tableView
?这是参数的名称吗?如果是这样,假设cellForRowAt
也是一个名称,为什么cellForRowAt
没有下划线时为什么需要下划线?
不是_tableView
,而是_ tableView
-请注意空格。 The underscore generally means "ignore this" in Swift.在这种情况下,下划线代替了参数标签,这意味着此方法的调用者不会为第一个参数写一个:
let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)
^ nothing here, just the value being passed as an argument
UITableView
是参数类型吗?IndexPath
是参数类型吗?
是的
indexPath
中的cellForRowAt indexPath
是什么?为什么有两个字?
cellForRowAt
是参数标签。 indexPath
是参数(在您的实现中)的内部名称。
调用函数的任何人都使用参数标签,例如呼叫站点如下:
let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)
参数名称是在函数体内引用该值的方式:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
self.doSomethingWithCellData(indexPath)
...
}
UITableViewCell
是返回类型,对吧?
对。如果您在此方法的实现中未包含return
语句,或者未包含return
的任何内容UITableViewCell
,则编译器会感到沮丧。
答案 1 :(得分:1)
您对internal
和func
和tableView
是正确的。有下划线是因为调用该函数时不必包括参数名称。您可以这样做:
tableView(myTableView, cellForRowAt: someIndexPath)
代替:
tableView(tableView: myTableView, cellForRowAt: someIndexPath)
UITableView
是与IndexPath
相同的参数类型。调用函数时(如上所示),您使用第一个单词cellForRowAt
,但是在内部该函数将使用indexPath
。调用该函数时,这两个词是为了便于阅读。 UITableViewCell
是返回类型。