2015-08-14 10 views

Antwort

9

inArray ist ein externer Name, den der Aufrufer der Funktion beim Übergeben von Parametern verwenden soll. arr ist der interne Name, den der Funktionsimplementierer in der Implementierung verwendet, um auf den Parameter zu verweisen. Sie müssen keinen externen Namen angeben. Dies macht es lesbarer. Es ist eher so, dass schnelle Funktionsnamen und Parameter als Objective-C-Funktionen lesbar sind.

+0

so inArray wird vom Argument im Funktionsaufruf an die Funktion übergeben? – Ali

+1

Ja, um auf dieses Argument zu verweisen. – neo

+0

Vielen Dank, es ist sehr klar für mich jetzt. Du bist unglaublich!! – Ali

4

Ich bin nicht auf das Problem der verschiedenen internen und externen Namen entweder verkauft.

Haben oder nicht, externe Namen zu haben, macht für mich Sinn.

object.BeepXTimes(6) benötigt keinen externen Namen für seinen Parameter, da der Funktionsname die Bedeutung des Parameters impliziert.

Der Grund, glaube ich, ist, dass manchmal die Benennung einer externen Parameters der Funktion Sinn für den Anrufer in einem Satz zu machen, ist formuliert:

someView.animateInWithDuration(0.25, withTimingFuction: .easeIn) 

Der externe Name withTimingFunction macht die Anruffunktion wie ein Lese Satz, aber withTimingFunction macht einen lausigen internen Parameternamen. Sie möchten wahrscheinlich, dass Ihr Parametername nur timingFunction lautet. Mit separaten internen und externen Parameternamen können Sie dies tun.

Für mich, aber die zusätzliche Komplexität, die dies in der Funktionsdefinition erfordert, scheint es nicht wert. Die gute Nachricht ist, dass standardmäßig Parameter unter Verwendung des gleichen Namens für interne und externe Parameternamen erstellt werden, sodass die Standardsyntax einfach und leicht zu lesen ist.

+0

ja die # vor dem Parameternamen, das ist viel effizienter und einfacher zu sehen auch, vielen Dank! – Ali

+0

Das # vor dem Parameternamen ist in Swift 2.0 veraltet und erzeugt eine Warnung. – zaph

+0

Entschuldigung. Ich habe mich auf Swift 2.0 bezogen. Ich wünschte, dass Apple Swift 2.0 veröffentlichen würde, so dass wir uns nur um eine einzige Syntax kümmern müssten. –

0

Dies sind interne und externe Parameternamen.

Genau wie in Obj-C, können Sie

- (void)calculateFoo:(id)foo withBar:(id)bar ... 

[object calculateFoo:var1 withBar:var2]; 

in Swift haben, verwenden wir

func calculateFoo(foo: AnyObject, withBar bar: AnyObject) ... 

object.calculateFoo(var1, withBar: var2) 

Die internen Namen foo und bar sind innerhalb der Funktion/Methode nur zugänglich. Die externen Namen liefern das Argument Labels, die Sie verwenden, um die Funktion aufzurufen.

In Ihrem Fall müssen Sie die interne Name nibBundle verwenden. Das ist das, auf das innerhalb des Funktionskörpers zugegriffen werden kann.

Verwandte Themen