2017-06-23 5 views
1

Das Komfort-Keyword in Swift völlig verwirrt mich. Es scheint überhaupt nicht nützlich zu sein. Das Aufrufen eines anderen Initialisierers (oder Konstruktors) in derselben oder einer höheren Klasse ist ein sehr häufiges Merkmal in objektorientierten Sprachen wie Java, C# und usw. Wenn ein Mitglied nicht initialisiert wird, gibt der Compiler eine Warnung aus. Es scheint das Einzige, was es tut, ist, den Aufruf auf einen anderen Initialisierer auf dieselbe Klasse zu beschränken, was es noch nutzloser erscheinen lässt. Also, warum dieses Schlüsselwort überhaupt?Ist Convenience-Schlüsselwort in swift wirklich notwendig?

Ich sah einige andere Themen im Internet diskutieren darüber, aber keiner von ihnen ist wirklich überzeugend.

Kennt jemand den wirklichen Zweck dieses Schlüsselworts?

+0

Rob, ich habe in meinem ursprünglichen Text erklärt, warum ich das als eine neue Frage begann. Keine der Antworten der bestehenden Fragen schien mir überzeugend zu sein. Wenn ich ihnen nur einen Kommentar hinzufüge, glaube ich nicht, dass ich eine gute Antwort bekommen werde. Also habe ich beschlossen, dies als eine neue Frage zu stellen. – jarly

Antwort

0

Von Der Swift Programming Language:

Sie müssen Bequemlichkeit initializers nicht geben, wenn Ihre Klasse nicht benötigt werden. Erstellen Sie Convenience-Initialisierer, wenn eine Verknüpfung zu einem allgemeinen Initialisierungsmuster Zeit spart oder die Initialisierung der Klasse in der Absicht klarer macht.

Also, im Grunde sind sie für Bequemlichkeit.

+0

Dies beschreibt, warum Convenience-Initialisierer optional sind, aber nicht, warum das Schlüsselwort convenience erforderlich ist. – Ssswift

+0

@Ssswift, was meinst du mit "erforderlich" zu sagen? Du kannst sie vermeiden und niemals benutzen. –

+0

Sie können zwar die Verwendung von Convenience-Initialisierern vermeiden, aber wenn Sie einen Convenience-Initialisierer erstellen möchten, müssen Sie in Ihrer Quelldatei das Wort 'convenience' eingeben. Keine andere Sprache erfordert dies. Darum geht es in der Frage. Die Syntax, nicht das Feature. – Ssswift

Verwandte Themen