除非我误解了这种语言(我刚开始学习swift),是什么原因指出所有方法相同并使用(外部)参数来识别它?我认为这可能是协议/代表的惯例。
我能想到的唯一原因是让代码更容易阅读,但即便如此,当我看到它时感觉也不对。
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
(最后一个看起来正常/我期望它如何)
答案 0 :(得分:1)
正如评论所指出的那样,它部分是历史性的,在Objective-C中有很多意义,其中实际的方法名称为
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
是
- tableView:cellForRowAtIndexPath:
使用swift,语言设计者选择使用命名参数来保持代码中函数的可读性,使Objective-C代码易于理解。
此外,命名参数是一个安全功能:如果命名参数并且它们的名称明显可用,则更不可能切换功能参数(特别是相同类型)。
考虑到这一点,在函数名中复制命名参数似乎是不必要的,此时框架的功能大大地从Objective-C桥接,与它们的Obj-C版本类似。
否则(这是历史部分)对现有开发人员来说很难,强迫他们使用新的命名方案,并可能使他们不能使用swift。