【发布时间】:2015-08-14 13:35:55
【问题描述】:
func mapEachElement (inArray arr: [Int], withFunc aFunc: (Int))
为什么会有“inArray”,然后是“arr”……有什么意义呢?
"withFunc" 和 "aFunc" 一样,代码更复杂,阅读也更混乱,为什么还要使用它们?
【问题讨论】:
标签: swift function parameters
func mapEachElement (inArray arr: [Int], withFunc aFunc: (Int))
为什么会有“inArray”,然后是“arr”……有什么意义呢?
"withFunc" 和 "aFunc" 一样,代码更复杂,阅读也更混乱,为什么还要使用它们?
【问题讨论】:
标签: swift function parameters
inArray 是函数调用者在传递参数时应该使用的外部名称。 arr 是函数实现者在实现中用于引用参数的内部名称。您不必提供外部名称。它使其更具可读性。它更像是让 swift 函数名称和参数像 Objective-C 函数一样可读。
【讨论】:
对于内部和外部名称不同的问题,我也没有意见。
有或没有外部名称对我来说很有意义。
object.BeepXTimes(6) 的参数不需要外部名称,因为函数名称暗示了参数的含义。
我认为的基本原理是,有时函数外部参数的命名在句子中对调用者来说是有意义的:
someView.animateInWithDuration(0.25, withTimingFunction: .easeIn)
外部名称withTimingFunction 使函数调用读起来像一个句子,但withTimingFunction 使内部参数名称很糟糕。您可能希望您的参数名称只是timingFunction。拥有单独的内部和外部参数名称可以让您做到这一点。
不过,对我来说,函数定义所需的额外复杂性似乎并不值得。好消息是默认为内部和外部参数名称使用相同名称创建参数,因此标准语法简单易读。
【讨论】:
这些是内部和外部参数名称。
就像在 Obj-C 中一样,你可能有
- (void)calculateFoo:(id)foo withBar:(id)bar ...
[object calculateFoo:var1 withBar:var2];
在 Swift 中,我们使用
func calculateFoo(foo: AnyObject, withBar bar: AnyObject) ...
object.calculateFoo(var1, withBar: var2)
内部名称foo 和bar 只能在函数/方法内部访问。外部名称提供了用于调用函数的参数 labels。
在您的情况下,您需要使用 internal 名称 nibBundle。那是在函数体内可以访问的那个。
【讨论】: