Qu'est-ce que le “=~” opérateur en Ruby?
J'ai vu cela sur un screencast et ne pouvais pas comprendre ce que c'était. Des feuilles de référence juste pile avec d'autres opérateurs comme une tendance générale à un opérateur de match.
- Chercher sur ruby-doc.org/core
- Assez souvent ruby docs sont utilisés comme un désinvolte solution pour répondre à toutes les questions sans se rendre compte que ruby docs n'est pas toujours facile à comprendre sur le site. Assez souvent (la plupart du temps) j'ai commencer avec ruby docs, ne parviennent pas à comprendre la crypté, anémique explications Google, seulement pour trouver il ya aussi pas de solutions sur Google. On n'a pas tout simplement Google "Ruby =~" ou "Rubis =~ méthode" ou "Rubis =~ opérateur" pour obtenir une réponse. Il serait agréable de voir de moins en moins de gens jeter ruby docs comme un paresseux solution et de voir plus en profondeur les réponses qui aident effectivement.
Vous devez vous connecter pour publier un commentaire.
Elle correspond à la chaîne de caractères à une expression régulière.
'hello' =~ /^h/# => 0
Si aucune correspondance n'est trouvée, il sera de retour
nil
. Si vous passer les arguments non valides (c'est à dire, de gauche ou de droite ne sont pas corrects), il va jeter unTypeError
ou de retourfalse
.De ruby-doc :
str =~ obj => fixnum or nil
Match—Si obj est une Regexp, l'utiliser comme un modèle pour le match contre str, et renvoie la position de décalage le début du match, ou zéro si aucune correspondance n'est trouvée. Sinon, appelle obj.=~, en passant str comme argument. La valeur par défaut =~ dans l'Objet renvoie la valeur false.
9
n'est pas une chaîne de caractères?Bien, la référence est correcte, c'est le "correspond à cette expression rationnelle" de l'opérateur.
Que les autres réponses déjà dit,
=~
est l'expression régulière vs chaîne opérateur de match.Remarque: Le
=~
opérateur n'est pas commutativeVeuillez considérer la note ci-dessous à partir de la ruby doc site, comme je l'ai vu encore que la première forme
utilisés dans les autres réponses:
Voici la documentation de la deuxième forme: lien
Expression régulière correspondant. Voici une liste détaillée des opérateurs: http://phrogz.net/programmingruby/tut_expressions.html#table_7.1
Expression régulière correspondant à:
met true si url =~ /google.com/
Vous pouvez lire '=~' en tant que 'est la mise en correspondance'.
Je crois que c'est un filtrage de l'opérateur utilisé avec la regex.