在Swift中调用函数时,每个部分的含义是什么?

时间:2016-11-05 01:35:45

标签: swift

例如,如果我写作:

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

tableView_tableView: UITableViewdidSelectRowAt indexPath: IndexPath各自所指的内容是什么?

2 个答案:

答案 0 :(得分:1)

请参阅Swift Language: Functions and Closures,其中包含:

  

功能和闭包

     

使用func声明一个函数。通过在括号中使用参数列表跟随其名称来调用函数。使用->将参数名称和类型与函数的返回类型分开。

func greet(person: String, day: String) -> String {
    return "Hello \(person), today is \(day)."
}
greet(person: "Bob", day: "Tuesday")
     

默认情况下,函数使用其参数名作为其参数的标签。在参数名称前写一个自定义参数标签,或者写_以不使用参数标签。

func greet(_ person: String, on day: String) -> String {
    return "Hello \(person), today is \(day)."
}
greet("John", on: "Wednesday")

所以,你的问题就像后一个例子。因此,当操作系统调用此委托方法时,它会调用它:

delegate.tableView(someTableView, didSelectRowAt: someIndexPath)

但你从不称这种方法。这是一种UITableViewDelegate方法,您永远不会称之为自己。您实现此方法,当用户从表中选择一行时,iOS将调用它。

答案 1 :(得分:0)

第一个tableView是方法名称。然后,括号内是参数,用逗号分隔。每个参数都有三个部分:外部名称,内部名称和类型。如果您希望调用者能够省略外部名称(代码调用方法所使用的参数的名称),则可以用下划线(_)替换它。因此,第一个参数的内部名称为tableView,没有外部名称。冒号(:)之后的部分是类型,第一个参数的类型为UITableView。第二个参数的外部名称为didSelectRowAt,内部名称为indexPath,类型为IndexPath