À propos du cas où ("b" .. "aa") ne pourrait pas être utilisé dans Ruby Range

Contexte

Le début de l'affaire

  1. Kinx prend en charge une plage de chaînes de caractères comme Ruby, mais comme "a" est à côté de "z", c'est simplement J'ai défini un opérateur «<=>» qui n'est pas dans l'ordre lexical. Si vous triez normalement à l'étape 2, ce ne sera pas dans l'ordre lexical. (Parce qu'il est jugé que plus la chaîne de caractères est longue, plus elle est grande)
  2. À propos, Ruby est dans l'ordre lexical, triant les chaînes. ** Quelque chose d'étrange **.

[Note] Qu'est-ce que Kinx? Premier motif ⇒ Veuillez voir ici Référentiel ⇒ Veuillez voir ici

j'ai vérifié

  1. Essayons "b" <=> "aa" `avec irb,

    irb(main):001:0> "b" <=> "aa"
    => 1
    irb(main):002:0>
    
  2. ** Quoi? !! ** **

  3. Et la gamme? Quand j'essaye d'afficher "" a ".." c "`.

    irb(main):002:0> a = "a".."c"
    => "a".."c"
    irb(main):003:0> a.each {|e| p e }
    "a"
    "b"
    "c"
    => "a".."c"
    
  4. Il sera répertorié correctement. Alors qu'en est-il du prétendu "" b ".." aa "?

    irb(main):004:0> a = "b".."aa"
    => "b".."aa"
    irb(main):005:0> a.each {|e| p e }
    => "b".."aa"
    
  5. Pourquoi ne puis-je pas utiliser " b ".." aa " ...

Conclusion

Mon sentiment

Après tout, "" b ".." aa "` ** veut aussi que tu bouges **, n'est-ce pas? Après «b» «est» «c» «, je voulais que vous continuiez vers« z »« et que vous finissiez par «aa» », mais qu'en est-il des autres?

Ce que j'ai réellement fait

Donc, dans Dernier référentiel (non inclus dans 0.8.1), je l'ai modifié comme suit.

  1. L'opérateur <=> de la chaîne est retourné dans l'ordre lexical.
  2. La partie <=> de la classe Range est traitée spécialement uniquement pour la chaîne de caractères afin que" b ".." aa " puisse également être utilisé.

en conclusion

Donc, ici (= Spécifications de plage pour les caractères) est différent de Ruby. S'il vous plaît laissez-nous savoir si vous avez des problèmes.

Eh bien, je ne l'utilise pas beaucoup dans des conditions aussi spéciales, donc personne ne semble avoir de problèmes. Donc, si vous dites lequel est bien, ce peut être l'un ou l'autre. C'était une histoire détaillée.

Et Ruby? Est-ce conforme aux attentes ou inattendu? Est-ce intentionnel ou non? Eh bien, la définition est claire et l'opération suit la définition, donc cela semble calme avec ce genre de chose = spécification.

À la prochaine.

Recommended Posts

À propos du cas où ("b" .. "aa") ne pourrait pas être utilisé dans Ruby Range
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
Le cas où "apt-get update" défini dans "Dockerfile" n'a pas pu être exécuté au moment de "docker-compose build"
À propos du problème que hidden_field peut être utilisé de manière insensée
L'histoire selon laquelle la mise à jour forcée n'a pas pu être mise en œuvre
Ruby on Rails 5 guide pratique d'apprentissage rapide qui peut être utilisé sur le terrain Résumé
À propos de la plage et de la portée dans lesquelles les variables Day16 peuvent être utilisées
Correspondant à "erreur que l'authentification de base ne réussit pas" dans le code de test "L'histoire qui n'a pas pu être faite"
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
[CentOS8] Puisque la commande javac n'a pas pu être utilisée, installez l'environnement de développement java.
Je ne savais pas que les classes internes pouvaient être définies dans l'interface [Java]
À propos de l'expression régulière utilisée dans la méthode ruby sub
L'histoire du port devenant inutilisable dans l'exemple de programme Spring Boot
L'histoire selon laquelle la méthode d'initialisation de variable appelée par le constructeur Java ne doit pas être remplacée
Différences entre les classes et les instances dans Ruby
Plage où les variables peuvent être utilisées avec ruby [Scope]
Touches de raccourci pratiques pour Eclipse
L'histoire selon laquelle le paramètre de requête de l'application iPhone n'a pas pu être obtenu avec le servlet
Apprendre Ruby avec la sélection des débutants AtCoder [Quelques sommes] Augmentez les méthodes qui peuvent être utilisées
[Question] Nullif peut-il être utilisé dans la fonction de comptage de JPQL?
Introduction à Rakefile qui peut être effectuée en 10 minutes environ
Nouvelles fonctionnalités de Java 14 pouvant être utilisées pour écrire du code
[Journal de développement ⑬] Ne laissez pas 0 être entré dans le formulaire !!
À propos du fait que: nth-child (-n + m) ne fonctionne pas comme prévu dans le sélecteur de jsoup