了解 tableView 等函数中的 Swift 参数表示法

Posted

技术标签:

【中文标题】了解 tableView 等函数中的 Swift 参数表示法【英文标题】:Understanding Swift argument notation in functions like tableView 【发布时间】:2015-02-23 15:38:22 【问题描述】:

我最近接触了 Swift,但有些东西我不明白。我想用单元格实现一个 tableView。我理解,但符号对我来说有点混乱。

我从 UITableViewDataSource 获得了这个功能

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return 5
    

你能告诉我什么是 numberOfRowsInSection 吗?他的参数部分是一个函数吗?我看到返回 Int 的函数 tableView 的名称、参数 tableView 和具有自己类型的部分。但我真的不明白 numberOfRowsInSection。

什么时候调用这个函数?

感谢您的回答。

【问题讨论】:

【参考方案1】:

区别在于内部外部参数标签。您可以使用两种不同类型的参数标签。内部使用在函数本身内部,外部使用在调用函数时使用。

tableView(tableView: UITableView, numberOfRowsInSection section: Int)
              /\                           /\              /\
              ||                           ||              ||
           internal                     external        internal

我们举个例子函数:

func test(str:String, thisIsATest str1:String)
    println(str1)//works
    println(thisIsATest)//error

如您所见,我打印了 str1 值。但是你会看到,它只适用于内部参数。

但是如果你现在像这样从外部调用函数:

test("hi", str1:"hi2") 

它会抛出一个错误。因为您使用 internal 参数标签。 但是如果你现在使用外部参数标签thisIsATest,它可以工作:

test("hi", thisIsATest:"hi2")

此外,您根本不必设置外部标签,但如果您设置外部标签,您还必须为其设置内部标签。但在某些情况下,您必须设置内部标签,例如在 init() 方法中。

即使很容易提醒,我也为此做了一个小马:我将一个功能与一个公司进行比较:如果你在公司工作,并且你想打电话给也在公司工作的人,你会使用内部电话号码。但是,如果您想将公司服务用作客户(功能的用户),您可以从 external 号码拨打电话。

【讨论】:

谢谢克里斯蒂安,很清楚。这基本上是 Apple 和开发人员的命名约定,以了解该功能最后的作用是什么?我们知道函数何时被调用吗?还是被 Apple 隐藏了? “我们知道函数何时被调用”是什么意思?好吧,这与方法的命名方式无关。

以上是关于了解 tableView 等函数中的 Swift 参数表示法的主要内容,如果未能解决你的问题,请参考以下文章

Tableview 中的 Swift Firebase Firestore 数据

TableView在弹出窗口中的Swift

在 tableView Swift 中使用 javascript 数据

在 tableView (Swift) 中添加填充函数

SWIFT:为 tableView 计算 numberOfRowsInSection 时,数组索引超出范围

修复了 tableView 函数的“已弃用并将在 Swift 4 中删除”警告