Wann ist es möglich, mehrzeilige Ausdrücke in swift zu schreiben?Mehrzeilige Ausdrücke in swift
Bisher habe ich ein Problem mit der Verkettung von Eigenschaften über Multilinien festgestellt.
Wann ist es möglich, mehrzeilige Ausdrücke in swift zu schreiben?Mehrzeilige Ausdrücke in swift
Bisher habe ich ein Problem mit der Verkettung von Eigenschaften über Multilinien festgestellt.
Nur die Zeile vor dem Punkt brechen. Ich schreibe diese Art von Code jeden Tag in anderen Sprachen.
class Foo {
var bar: Foo {
return self
}
var veryLongNameVariable: Foo {
return self
}
func method(i: Int, _: Int) -> Foo {
return self
}
}
let f = Foo()
let f2 = f
.bar
.method(3, 4)
.bar
.bar
.method(0, 2)
.veryLongNameVariable
.veryLongNameVariable
print(f2)
Ein Kommentar kann mehrere Zeilen enthalten, wenn er auf die folgende Zeile erweitert wird, ohne dass Sie die Eingabetaste drücken (oder ein neues Zeilenzeichen hinzufügen).
Der einfachste Ort, an dem Sie eine neue Zeile im tatsächlichen Code treffen können, ist innerhalb von Klammern/Klammern zwischen Komma-getrennten Anweisungen. Anweisungen können durch die Änderung des Codes mehr aufgelöst werden, aber es fällt Ihnen nichts anderes ein.
Oft wird es als bessere Praxis angesehen, eine let-Anweisung für einen Teil einer Anweisung zu verwenden, wie Sie sie gemacht haben, um sie aufzuteilen und lesbarer zu machen.
Jedes Problem, mit dem Sie gerade arbeiten, hat nichts mit mehreren Zeilen zu tun, es sei denn, Sie sind tatsächlich lang genug, um die Warnung zu erhalten, dass sie zu schwer zu berechnen ist. Diese Warnung konnte immer behoben werden, indem der Code in mehrere Teile getrennt wurde. Wer möchte eine Zeile mit 200 Zeichen?
let object = self.anObject
let varx = object(a: true,
b: false)
let vary = varx.vary
let varz = vary.varz
let longName = varz.veryLongVariableName
return longName
Genau deshalb habe ich die Frage gestellt, alles über Lesbarkeit. Haben Sie ein 80-Spaltenlineal eingestellt. Ich frage mich, ob Sie Eigenschaften über mehrere Zeilen hinweg verketten können. Aber Sie können nicht, Split-over-Anweisung ist eine gute Lösung. Vielen Dank. – BARJ
I max aufgeteilt, einschließlich der neuen Zeile in der Varx-Deklaration. Ich würde nicht alle Objekteigenschaften auf diese Weise verketten. Tu es einfach so, dass es sich am lesbarsten anfühlt. Einige Dinge haben Standards in der Norm, um sie zu teilen, aber am Ende ist es alles, was Sie oder Ihre Teams bevorzugen. – Sethmr
Sie können den Ausdruck teilen!
Wenn Sie einen Ausdruck über mehrere Zeilen, immer daran denken, den Punkt auf die neue Linie zu setzen:
let s = ""
s.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
.capitalizedString
Wenn Sie den Punkt auf der gleichen Linie setzen, wird es nicht kompilieren:
var s = ""
s.capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString.
capitalizedString
Eine andere Sache, die Sie tun können, ist auf Zeilenumbruch in Xcode drehen:
Es wird wie folgt aussehen:
Splitting der Linie vor einem Punkt möglich sein sollte. Können Sie ein _self-contained_ Beispiel bereitstellen, das das Problem demonstriert? –
Meine schlechte, ich bin es gewohnt, nach Betreibern zu spalten. Wie bei LINQ-Abfragen. Übersehen Sie sich vor dem Punkt, mein schlechtes. – BARJ