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

时间:2015-08-14 13:35:56

标签: swift function parameters

@echo off
assoc .sh=shellscript
ftype shellscript="C:\cygwin\bin\mintty.exe" -w max -h always -t "%%1" -e /bin/bash -li -c 'printf "\033]0;$(cygpath -u "%%1")\007" ^&^& cd "$(dirname "$(cygpath -u "%%1")")" ^&^& bash "$(cygpath -u "%%1")"'
pause

为什么会出现“inArray然后”arr“......重点是什么?

“withFunc和”aFunc“相同,它使代码更复杂,阅读更麻烦,为什么它们甚至被使用?

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:6)

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

拥有或不拥有外部名称对我有意义。

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

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

someView.animateInWithDuration(0.25, withTimingFunction: .easeIn)

外部名称withTimingFunction使函数调用看起来像一个句子,但是withTimingFunction会产生一个糟糕的内部参数名称。您可能希望参数名称仅为timingFunction。拥有单独的内部和外部参数名称可以实现这一目标。

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

答案 2 :(得分:0)

这些是内部外部参数名称。

就像在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)

内部名称foobar只能在函数/方法中访问。外部名称提供了用于调用函数的参数 labels

在您的情况下,您需要使用内部名称nibBundle。这是在函数体内可访问的那个。