2016-09-29 5 views
0

In der folgenden Funktionsaufruf .didSelectRating was ist das self Argument (?) Angibt? Was ist das genau?Was bedeutet das Selbstargument in einem Funktionsaufruf?

Ich habe das schon ein paar Mal gesehen und weiß nicht, wie ich diese Syntax lernen soll, weil ich nicht weiß, was ich nachschlagen soll. Ich verstehe, dass das rating Wort im zweiten Argument der Argumentname ist, aber ich verstehe nicht, wie das erste Wort vor dem Komma sowohl den Namen als auch das Argument einkapselt.

Wie heißt das und was macht es? Ist self das einzige hier verwendete Wort oder kann etwas anderes hier sein?

protocol RatingPickerDelegate { 
    func preferredRatingSymbol(picker: RatingPicker) -> UIImage? 
    func didSelectRating(picker: RatingPicker, rating: Int) 
    func didCancel(picker: RatingPicker) 
} 


func selectRating(selectedRating: Int) { 
     delegate?.didSelectRating(self, rating: selectedRating) 
     // Other logic related to selecting a rating 
    } 
+0

Die Anforderung für Argumentbezeichnungen hat sich von Swift 2 zu Swift 3 geändert. Ich vermute, dass dieser Code Swift 2 ist; Weitere Informationen finden Sie unter https://github.com/apple/swift-evolution/blob/master/proposals/0046-first-label.md. – sbooth

Antwort

1

"self" bezieht sich auf das aktuelle Objekt. Wenn Sie es als Argument übergeben, bedeutet dies, dass das erste Argument ein Objekt dieser Klasse ist. Das Schlüsselwort "self" ist das Äquivalent von "this" in Java, Javascript oder c, wenn es Ihnen hilft, es zu entziffern oder danach zu suchen.

Warum das erste Argument den Namen nicht benötigt, wurde swift language definiert. Schätze es nimmt es von objectice-c ab, wo du den Namen für jedes Argument außer dem ersten eingibst.

0

self bezieht sich auf das Objekt, für das die Methode aufgerufen wurde. Hier wird es verwendet, um dieses Objekt in eine andere Methode zu übertragen.