Dies ist eine Schreibweise der Gedanken des ersten Gelehrten, des Autors, als er "compare" zum ersten Mal traf.
Vergleichen bezieht sich hier auf Swifts String-Klasseninstanzmethode compare
.
Es ist ein "Vergleichsergebnis". Ja das ist es.
Es ist ein Anfänger, der nicht wird ...
Ich war einer von ihnen.
Das Apple Developer Document sagt auch ** Rückgabewert
** prominent!
Ich stolpere an einem so rudimentären Ort, aber der Prozess von Versuch und Irrtum war eine gute Studie, deshalb habe ich beschlossen, ihn hier in Form einer Ausgabe zu belassen.
Einführung in Swift Practice 3rd Edition P53 Erweiterte Bedienung durch Foundation mit Beispielcode
Es wird der obige Teil sein. Ich denke, es gibt viele Anfänger, die dieses Buch zum schnellen Lernen in die Hand nehmen. Ich blieb stecken, als ich den folgenden Code sah, der plötzlich oben auftauchte.
//P53 Beispielcode
import Foundation //compare ist eine Methode, die von einer Bibliothek namens Foundation bereitgestellt wird
//Vergleich der Reihenfolge zwischen zwei Zeichenfolgen
let options = String.CompareOptions.caseInsensitive
let order = "abc".compare("ABC", options: options)
order == ComparisonResult.orderedSame //true
Im obigen Code überprüft die Methode compare (_: option) die Reihenfolge zwischen den beiden Zeichenfolgen. --Omitted-- Das Ergebnis ist ein Wert von .orderSame, was bedeutet, dass die Reihenfolge dieselbe ist.
Es ist schwer zu verstehen, wenn man es nur liest.
let options = String.CompareOptions.caseInsensitive
Dies ist eine Option der Compare-Methode, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird. Dies ist als konstante Option definiert.
let order = "abc".compare("ABC", options: options)
Auf der rechten Seite wird die Vergleichsmethode für die Zeichenfolge "abc" verwendet, um sie mit "ABC" in () zu vergleichen. Zu diesem Zeitpunkt erhält es die zuvor als Argument definierten "Optionen". Das hier erhaltene Ergebnis ist als konstante "Ordnung" definiert.
order == ComparisonResult.orderedSame
Die in der zweiten Zeile definierten order
und ComparisonResult.orderedSame
werden auf den Vergleichsoperator angewendet, und true wird zurückgegeben.
Aufgrund der obigen Ausführungen habe ich den Code ein wenig vereinfacht. Die Optionen werden weggelassen, da sie nichts mit der Frage zu tun zu haben scheinen.
let order = "abc".compare("abc")
order == ComparisonResult.orderedSame // true
Mit anderen Worten, der Rückgabewert von "abc" .compare ("abc") "ist" ComparisonResult.orderedSame "?
Ich habe nachgeschaut.
let hoge = "abc".compare("abc")
print(hoge) // NSComparisonResult
Ausführungsergebnis ・ ・ NS NSComparisonResult
Es scheint notwendig zu sein, diesen Kerl zu verstehen, der mit einem Gesicht erschien, das selbst mit dem Beispielcode nicht frisst.
Bei der Untersuchung wurde festgestellt, dass ComparisonResult
ein ** Aufzählungstyp ** ist und drei Fallkonstanten aufweist.
enum ComparisonResult: Int {
case orderedAscending = -1
case orderedSame = 0
case orderedDescending = 1
}
Dies bedeutet, dass die Vergleichsmethode ein Vergleichsergebnis zurückgibt, nachdem einer der Fälle abgerufen wurde.
--case orderAscending ・ ・ ・ <
--case orderSame ・ ・ ・ =
--case orderDescending ・ ・ ・ >
Da das Vergleichsziel diesmal gleich war, haben wir den Wert orderSame
und erhalten
Dies bedeutet, dass "ComparisonResult.orderedSame" zurückgegeben wurde.
Kehren wir also zum Code am Anfang zurück. Da es eine große Sache ist, werde ich "ABC" in "DEF" ändern.
let options = String.CompareOptions.caseInsensitive
let order = "abc".compare("DEF", options: options)
order == ComparisonResult.orderedAscending
// true
Der Rückgabewert von "abc" .compare ("DEF", options: options) "in der zweiten Zeile ist" ComparisonResult.orderedAscending ", also ist es wahr. Das Vergleichsergebnis ist "abc <DEF".
Selbst wenn ich es jetzt selbst schreibe, ist es ein Inhalt, der mich wundern lässt: "Warum hat dich das interessiert?"
Der Grund, warum ich daran denken kann, könnte sein, dass ich verwirrt war, dass der Rückgabewert der Methode ein Aufzählungstyp war.
Es ist eine andere Methode, aber ich stellte mir das folgende einfache Verhalten vor. Code und Ausführungsergebnisse wie erwartet
//Code und Ausführungsergebnisse wie erwartet
"abc".isEqual("abc")
// true
Auch diesmal fiel es mir schwer zu verstehen, weil ich das Vorurteil hatte, dass die oben erwähnte Form nicht aus meinem Kopf geriet und dass "Vergleichsmethoden wahr / falsch zurückgeben".
Das ist es.
Vielen Dank für das Lesen bisher m (_ _) m
Recommended Posts