5
Seit Xcode Beta 3 können wir [int]
als kurze Hand für Array<Int>
schreiben.Neue Swift-Array-Syntax und generische Funktion
Also sollten wir schreiben:
func commonElements <T, U where T: Sequence, U: Sequence,
T.GeneratorType.Element: Equatable,
T.GeneratorType.Element == U.GeneratorType.Element>
(lhs: T, rhs: U) -> [T.GeneratorType.Element] {
var result = [T.GeneratorType.Element]()
for lhsItem in lhs {
for rhsItem in rhs {
if lhsItem == rhsItem {
result += rhsItem
}
}
}
return result
}
commonElements([1, 2, 3, 4], [2, 4, 6])
Aus einem Grund Ich verstehe nicht, Xcode nicht akzeptiert die kurze Syntax result
Array zu initialisieren, aber seine lange gleichwertig Array<T.GeneratorType.Element>()
akzeptieren.
Fehle ich etwas?
Ich denke, es ist ein Compiler-Bug, die nächste Xcode-Beta kann es lösen. (NB: [Type]() ist die Syntax, die Apple in seinem Swift-Dokument verwendet, um ein leeres Array zu deklarieren.) – clmntcrl
@clmntcrl Apple verwendet beide Notationen '[]()' erscheint 12 Mal in * The Swift Programming Language * and '[] 'erscheint 7 mal. – JeremyP