Ceci est une orthographe des pensées du premier savant, l'auteur, quand il a rencontré pour la première fois «comparer».
Compare ici fait référence à la méthode d'instance de classe String de Swift compare
.
C'est un "résultat de comparaison". Oui c'est ça.
C'est un débutant qui ne devient pas ...
J'étais l'un des leurs.
Le Apple Developer Document indique également ** Valeur de retour
** en évidence!
Je trébuche dans un endroit si rudimentaire, mais le processus d'essais et d'erreurs était une bonne étude, alors j'ai décidé de le laisser ici sous forme de sortie.
Introduction à Swift Practice 3e édition P53 Fonctionnement avancé par Foundation avec un exemple de code
Ce sera la partie ci-dessus. Je pense qu'il y a beaucoup de débutants qui choisissent ce livre pour apprendre rapidement. Je suis resté coincé quand j'ai vu le code suivant qui est soudainement apparu ci-dessus.
//Exemple de code P53
import Foundation //compare est une méthode fournie par une bibliothèque appelée Foundation
//Comparaison d'ordre entre deux chaînes
let options = String.CompareOptions.caseInsensitive
let order = "abc".compare("ABC", options: options)
order == ComparisonResult.orderedSame //true
Dans le code ci-dessus, la méthode compare (_: option) valide l'ordre entre les deux chaînes. --Omitted-- Le résultat est une valeur de .orderSame, ce qui signifie que l'ordre est le même.
C'est difficile à comprendre rien qu'en le lisant.
let options = String.CompareOptions.caseInsensitive
Il s'agit d'une option fournie par la méthode Compare qui ne respecte pas la casse. Ceci est défini comme une option constante.
let order = "abc".compare("ABC", options: options)
Sur le côté droit, la méthode de comparaison est utilisée pour la chaîne de caractères "abc" pour la comparer avec "ABC" entre (). A ce moment, il reçoit les options
définies précédemment comme argument.
Le résultat obtenu ici est défini comme la constante «ordre».
order == ComparisonResult.orderedSame
Les commandes "order" et "ComparisonResult.orderedSame" définies dans la deuxième ligne sont appliquées à l'opérateur de comparaison et true est renvoyé.
Sur la base de ce qui précède, j'ai un peu simplifié le code. Les options sont omises car elles ne semblent rien avoir à voir avec la question.
let order = "abc".compare("abc")
order == ComparisonResult.orderedSame // true
En d'autres termes, la valeur de retour de «abc» .compare («abc») »est« ComparisonResult.orderedSame »?
Je l'ai vérifié.
let hoge = "abc".compare("abc")
print(hoge) // NSComparisonResult
Résultat de l'exécution ・ ・ ・ NSComparisonResult
Il semble qu'il soit nécessaire de comprendre ce gars qui est apparu avec un visage qui ne mange pas même avec l'exemple de code.
Après examen, il a été constaté que «ComparisonResult» est un ** type d'énumération ** et a trois constantes de cas.
enum ComparisonResult: Int {
case orderedAscending = -1
case orderedSame = 0
case orderedDescending = 1
}
Cela signifie que la méthode compare retournera un ComparisonResult après avoir obtenu l'un des cas.
--Case commandéAscending ・ ・ ・ <
--Case ordonnéMême ・ ・ ・ =
--Case commandéDescendant ・ ・ ・ >
Étant donné que la cible de comparaison était égale cette fois, nous avons obtenu la valeur «OrdonnéSame» et Cela signifie que «ComparisonResult.orderedSame» a été renvoyé.
Revenons donc au code du début. Puisque c'est un gros problème, je changerai ce qui était "ABC" en "DEF".
let options = String.CompareOptions.caseInsensitive
let order = "abc".compare("DEF", options: options)
order == ComparisonResult.orderedAscending
// true
La valeur de retour de " abc ".compare (" DEF ", options: options)
sur la deuxième ligne est ComparisonResult.orderedAscending
, donc c'est vrai.
Le résultat de la comparaison est «abc <DEF».
Même si je l'écris moi-même maintenant, c'est un contenu qui me fait me demander: «Pourquoi t'es-tu intéressé à ça?
La raison pour laquelle je peux y penser est peut-être que j'étais confus que la valeur de retour de la méthode était un type d'énumération.
C'est une autre méthode, mais j'ai imaginé le comportement simple suivant. Code et résultats d'exécution comme je m'y attendais
//Code et résultats d'exécution comme je m'y attendais
"abc".isEqual("abc")
// true
Cette fois aussi, j'ai eu du mal à comprendre à cause du préjugé que la forme mentionnée ci-dessus ne me sortait pas de l'esprit et que "les méthodes comparatives retournent vrai / faux".
C'est ça.
Merci d'avoir lu jusqu'à présent m (_ _) m
Recommended Posts