<分区>
除非我误解了该语言(我刚刚开始学习 swift),否则将所有方法命名为相同并使用(外部)参数来标识它的原因是什么?我认为这可能是协议(protocol)/委托(delegate)的约定。
我能想到的唯一原因是让代码更容易阅读,但即便如此,当我看到它时,还是感觉不太对劲。
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
@available(iOS 2.0, *)
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
@available(iOS 2.0, *)
optional public func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented
(最后一个看起来很正常/我期望的样子)
最佳答案
正如评论所指出的,它部分是历史性的,并且在 Objective-C 中很有意义,其中实际的方法名称是
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
是
- tableView:cellForRowAtIndexPath:
对于 swift,语言设计者选择使用命名参数来保持代码中函数的可读性,从而使 Objective-C 代码易于理解。
此外,命名参数是一项安全功能:如果函数参数已命名并且它们的名称使它们的用途显而易见,那么您就不太可能切换函数参数(尤其是相同类型的参数)。
考虑到这一点,在函数名称中复制命名参数似乎是不必要的,并且此时从 Objective-C 大量桥接的框架函数与它们的 Obj-C 版本保持相似。
否则(这是历史部分)这对现有开发人员来说很难,迫使他们采用新的命名方案,并可能阻止他们使用 swift。
关于ios - 为什么 tableView 方法按原样命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951612/