为同一参数设置两个不同的名称有什么意义?

Ali*_*li 9 parameters function swift

func mapEachElement (inArray arr: [Int],  withFunc aFunc: (Int))
Run Code Online (Sandbox Code Playgroud)

为什么会有"inArray然后"arr"...有什么意义?

对于"withFunc和"aFunc"来说,它使代码更复杂,阅读更麻烦,为什么它们甚至被使用?

neo*_*neo 10

inArray是函数调用者在传递参数时应使用的外部名称.arr是函数实现者在实现中用于引用参数的内部名称.您不必提供外部名称.它使其更具可读性.它更像是像Objective-C函数那样使swift函数名和参数可读.


Dun*_*n C 6

我不会因为有不同的内部和外部名称而被出售.

拥有或没有外部名称对我来说是有道理的.

object.BeepXTimes(6) 它的参数不需要外部名称,因为函数名称暗示了参数的含义.

我认为,基本原理是,有时候函数外部参数的命名是用来对句子中的调用者有意义的:

someView.animateInWithDuration(0.25, withTimingFunction: .easeIn)
Run Code Online (Sandbox Code Playgroud)

外部名称withTimingFunction使函数调用像句子一样读取,但是withTimingFunction产生一个糟糕的内部参数名称.您可能希望您的参数名称正好timingFunction.拥有单独的内部和外部参数名称可以实现这一点.

但对我来说,功能定义中所需的额外复杂性似乎并不值得.好消息是默认是为内部和外部参数名称使用相同的名称创建参数,因此标准语法简单易读.