/ / Comparaison d'objets de chaîne dans Swift - comparez, comparez

Comparaison des objets de chaîne dans Swift - comparer, rapidement

Tout le monde sait que vous pouvez utiliser l'opérateur == pour comparer les choses.

if (stringValue1 == stringValue2)

Si vous faites cela en Objective-C, le programmevérifie si ces objets sont les mêmes pas si les deux chaînes contiennent le même texte. Si vous souhaitez comparer les valeurs de texte, vous devez utiliser une méthode de comparaison.

À ma connaissance, le même code dans Swift necomparer les valeurs du texte. C'est bien. Beaucoup de langage de programmation fonctionnent comme ça. Mais que dois-je faire pour vérifier si ces deux valeurs se rapportent au même objet?

Réponses:

3 pour la réponse № 1

Pour les objets de type classe, vous pouvez vous le === opérateur pour vérifier si deux objets se rapportent à la même instance. Cependant, vous posez spécifiquement des questions sur les chaînes. Les chaînes dans swift ne sont pas de type classe - elles sont valeurs. le === opérateur ne travaillera pas pour eux - de la même manière quecela ne fonctionne pas pour les entiers. Donc, la réponse à votre question - comment vérifier si deux chaînes sont la même instance - dans Swift est: cela n’est pas possible. Avec les chaînes dans Swift, vous devriez utiliser des opérateurs normaux comme == etc. seulement.


0 pour la réponse № 2

Vous ne pouvez pas "comme les chaînes sont des types de valeur, pas des types d'objet. Le === opérateur ne fonctionne qu'avec des types d'objet (de AnyObject) mais String est de type Any.

  6> "abc" === "abc"
repl.swift:6:1: error: type "String" does not conform to protocol "AnyObject"
"abc" === "abc"
^
Swift.lhs:1:5: note: in initialization of parameter "lhs"
let lhs: AnyObject?
^

6> var str : String = "abc"
str: String = "abc"
7> str === str
repl.swift:7:1: error: type "String" does not conform to protocol "AnyObject"
str === str
^
Swift.lhs:1:5: note: in initialization of parameter "lhs"
let lhs: AnyObject?
^