Über den Fall, dass ("b" .. "aa") nicht in Ruby Range verwendet werden konnte

Hintergrund

Der Anfang der Sache

  1. Kinx unterstützt eine Reihe von Zeichenfolgen wie Ruby, aber da "a" neben "z" steht, ist dies einfach Ich habe einen <=> Operator definiert, der nicht in lexikalischer Reihenfolge ist. Wenn Sie in Schritt 2 normal sortieren, erfolgt die Sortierung nicht in lexikalischer Reihenfolge. (Weil beurteilt wird, dass die Zeichenkette umso größer ist, je länger sie ist.)
  2. Ruby ist übrigens in lexikalischer Reihenfolge und sortiert Zeichenfolgen. ** Etwas Merkwürdiges **.

[Hinweis] Was ist Kinx? Erstes Motiv ⇒ Siehe hier Repository ⇒ Siehe hier

Ich überprüfte

  1. Versuchen wir "b" <=> "aa" "mit irb,

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

  3. Und was ist mit Range? Wenn ich versuche, "a" .. "c" "anzuzeigen.

    irb(main):002:0> a = "a".."c"
    => "a".."c"
    irb(main):003:0> a.each {|e| p e }
    "a"
    "b"
    "c"
    => "a".."c"
    
  4. Es wird ordnungsgemäß aufgelistet. Was ist also mit dem angeblichen "b" .. "aa"?

    irb(main):004:0> a = "b".."aa"
    => "b".."aa"
    irb(main):005:0> a.each {|e| p e }
    => "b".."aa"
    
  5. Warum kann ich "b" nicht verwenden? "Aa" ...

Fazit

Mein Gefühl

Immerhin " b ".." aa " will auch, dass du dich bewegst **, nicht wahr? Nach "b" ist "c" wollte ich, dass Sie mit "z" fortfahren und dann mit "aa" enden, aber was ist mit anderen Leuten?

Was ich tatsächlich getan habe

Daher habe ich es in Latest Repository (nicht in 0.8.1 enthalten) wie folgt geändert.

  1. Der Operator <=> der Zeichenfolge wird in lexikalischer Reihenfolge zurückgegeben.
  2. Der "<=>" - Teil des "Klassenbereichs" wird speziell nur für die Zeichenfolge behandelt, so dass "b" .. "aa" "auch verwendet werden kann.

abschließend

Hier unterscheidet sich (= Bereichsspezifikation für Zeichen) von Ruby. Bitte lassen Sie uns wissen, wenn Sie Probleme haben.

Nun, ich benutze es unter solchen besonderen Bedingungen nicht viel, also scheint niemand in Schwierigkeiten zu sein. Wenn Sie also sagen, welches in Ordnung ist, kann es eines sein. Es war eine detaillierte Geschichte.

Wie wäre es mit Ruby? Liegt es innerhalb der Erwartungen oder unerwartet? Ist es beabsichtigt oder nicht? Nun, die Definition ist klar und die Operation folgt der Definition, so dass es mit dieser Art von Dingen = Spezifikation ruhig erscheint.

Bis zum nächsten Mal.

Recommended Posts

Über den Fall, dass ("b" .. "aa") nicht in Ruby Range verwendet werden konnte
Der Fall, dass @Autowired in JUnit5 nicht verwendet werden konnte
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
Der Fall, in dem das in der "Docker-Datei" definierte "apt-get update" während des "Docker-Compose-Builds" nicht ausgeführt werden konnte.
Über die Sache, dass hidden_field wahnsinnig benutzt werden kann
Die Geschichte, dass das erzwungene Update nicht implementiert werden konnte
Ruby on Rails 5 - Kurzanleitung zum Lernen, die im Feld Zusammenfassung verwendet werden kann
Informationen zu Bereich und Umfang, in denen Day16-Variablen verwendet werden können
Entspricht "Fehler, dass die Basisauthentifizierung nicht bestanden wird" im Testcode "Die Geschichte, die nicht gemacht werden konnte".
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
[CentOS8] Da der Befehl javac nicht verwendet werden konnte, installieren Sie die Java-Entwicklungsumgebung.
Ich wusste nicht, dass innere Klassen in der [Java] -Schnittstelle definiert werden können
Informationen zum regulären Ausdruck, der in der Ruby-Submethode verwendet wird
Die Geschichte, dass der Port im Spring-Boot-Beispielprogramm unbrauchbar wird
Das Problem, dass der Test nicht über die Befehlszeile mit Spring-Boot-Starter-Test ausgeführt werden konnte, wurde behoben
Die Geschichte, dass die vom Java-Konstruktor aufgerufene Methode zur Variableninitialisierung nicht überschrieben werden sollte
Unterschiede zwischen Klassen und Instanzen in Ruby
Bereich, in dem Variablen mit Ruby verwendet werden können [Scope]
Praktische Tastenkombinationen für Eclipse
Die Geschichte, dass der Anforderungsparameter aus der iPhone-Anwendung mit dem Servlet nicht erfolgreich abgerufen werden konnte
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Einige Summen] Erhöhen Sie die Methoden, die verwendet werden können
[Frage] Kann nullif in der Zählfunktion in JPQL verwendet werden?
Einführung in Rakefile, die in ca. 10 Minuten durchgeführt werden kann
Java 14 neue Funktionen, mit denen Code geschrieben werden kann
[Entwicklungsprotokoll ⑬] Lassen Sie 0 nicht in das Formular eingeben !!
Zu der Sache, dass: n-tes Kind (-n + m) im Selektor von jsoup nicht wie beabsichtigt funktioniert