Int
zu ForwardIndexType
entspricht daher in
let i = 1...100
...
soll der Betreiber
public func ...<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos>
und das Ergebnis ist ein Range<Int>
. Bereiche sind Sammlungen und Sequenzen: Man kann die Elemente des Bereichs aufzählen und daraus ein Array erstellen.
Aber String
und Character
entsprechen nicht ForwardIndexType
: Es gibt keine Methode aus einer Zeichenfolge oder ein Zeichen, um zum nächsten zu gelangen. Daher in
let i = "a"..."z"
...
ist Betreiber
public func ...<Bound : Comparable>(start: Bound, end: Bound) -> ClosedInterval<Bound>
und das Ergebnis ist ein ClosedInterval<String>
. Sie können überprüfen, ob eine bestimmte Zeichenfolge in diesem Intervall enthalten ist, aber Sie können ihre Elemente nicht aufzählen.
"a"..."z"
repräsentiert alle Saiten s
für die "a" <= s <= "z"
nach dem Unicode-Standard, und nicht nur den 26 Kleinbuchstaben aus dem Alphabet Englisch, zu vergleichen, z.B. What does it mean that string and character comparisons in Swift are not locale-sensitive?. Zum Beispiel
let c = i.contains("ä")
ergibt true
.
In Swift 3 haben die Reichweite und Intervalltypen wurden umbenannt und reorganisiert:
"1" ... "100" // CountableClosedRange<Int>
"a" ... "z" // ClosedRange<String>
Wenn Ihre Absicht ist es, ein Array mit allen Charakteren aus „a“ bis „z“ nach ihrer erstellen Bestellung in den Unicode-Tabellen dann Sie können die UTF-32
Codeeinheiten aufzählen:
let i = UnicodeScalar("a").value ... UnicodeScalar("z").value
let charArray = (i.map { Character(UnicodeScalar($0)) })
// or
let stringArray = (i.map { String(UnicodeScalar($0)) })
Das Ergebnis ist
["a", "b", "c", ... , "z"]
als ein Array von Character
oder ein Array von String
.