2016-04-18 7 views
0

Nehmen wir an, dass ich eine Klasse wie dieses:Lokale Parameter Label Namenskonvention in initializers

class Foo { 

    private let userId: String 

    init(userId givenUserId: String) { 
     userId = givenUserId 
    } 
} 

Wenn ich initializers (oder Funktionen), wie die oben ein, so diejenigen, einige interne variable Einstellung, wie ich sie den Namen ihres externen Parameters so beschreibend zu haben, wie er sein kann. Auf der anderen Seite ist es auch gut, denselben Namen in der internen Klassenimplementierung zu verwenden. Aber dann muss ich ein lokales Parameterlabel verwenden und die Art und Weise, wie ich es tue, besteht darin, ein Präfix "gegeben" vor dem externen Parameterlabel hinzuzufügen. Ist dies ein guter Weg dies zu tun oder gibt es eine bessere Methode oder Konvention, um das Problem zu lösen?

Antwort

4

In Swift-Initialisierern können Sie die lokalen Bezeichnungen verwenden, die mit den Eigenschaftsnamen identisch sind. Mit der Notation self. ermittelt der Compiler automatisch, welche für einfache Zuweisungen zu verwenden ist. Auf diese Weise können Sie aussagekräftige externe Parameter verwenden und vermeiden, externe und interne Parameterbeschriftungen zu definieren.

class Foo { 

    private let userId: String 

    init(userId: String) { 
     self.userId = userId 
    } 
} 
+0

Dank, nicht über diese – pkacprzak

1

Um zu vermeiden, zweideutig zu sein, können Sie Ihre Klasse wie das schreiben konnte:

class Foo { 

    private let userId: String 

    init(userId userId: String) { 
     self.userId = userId 
    } 
} 

Selbst Stichwort, nimmt automatisch die interne var.

Wenn Sie etwas Präzision wollen, wie eine gute Codierung Stil haben, empfehle ich Ihnen: swift-style-guide

+0

Gute Anruf auf dem raywenderlich.com Swift Style Guide wusste, passt es gut Der Stil, dem viele Swift-Programmierer folgen. – ColGraff