ich gerade entdeckt, die folgende seltsame Verhalten mit String#split
:Warum ist Split ('') versucht (zu) schlau zu sein?
"a\tb c\nd".split
=> ["a", "b", "c", "d"]
"a\tb c\nd".split(' ')
=> ["a", "b", "c", "d"]
"a\tb c\nd".split(/ /)
=> ["a\tb", "c\nd"]
The source (string.c von 2.0.0) über 200 Zeilen lang und enthält eine Passage wie folgt aus:
/* L 5909 */
else if (rb_enc_asciicompat(enc2) == 1) {
if (RSTRING_LEN(spat) == 1 && RSTRING_PTR(spat)[0] == ' '){
split_type = awk;
}
}
Später in dem Code für die awk
Split-Art, das eigentliche Argument wird nicht einmal mehr verwendet und tut das gleiche wie eine einfache split
.
- Hat sonst jemand das Gefühl, dass das irgendwie kaputt ist?
- Gibt es gute Gründe dafür?
- Passiert "Magie" öfter, als die meisten Leute in Ruby denken?
Warum ist etwas dokumentiert, das "zu schlau" ist? Es handelt sich um ein beabsichtigtes Standardverhalten, das Sie überschreiben können, wenn Sie ein alternatives Muster zum Teilen von Text übergeben. –
Mit zu klug meine ich ruby rät, dass ich auf alle Leerzeichen Zeichen teilen möchte, wo ich buchstäblich sage es auf Räume zu teilen. –
Ich werde dafür stimmen, diese Frage zu schließen, da mir klar wird, dass es wahrscheinlich keine allgemeine, befriedigende Antwort auf diese Frage gibt. Danke für all deine Antworten und Kommentare! –