Dies ist wahrscheinlich eher ein beabsichtigtes Verhalten als ein Fehler. Nach der Dokumentation sprengt ein Array:
Teilen Sie das Array in einen oder mehrere Subtarrays, basierend auf einem abgrenzenden Wert oder dem Ergebnis eines optionalen Blocks.
Dies macht keine Garantien für zusammenhängende oder führende Räume.
Andererseits die Ruby Core -Dokumentation zum String#split
Zustände:
Wenn das Muster eine Zeichenfolge ist, wird der Inhalt als Trennzeichen verwendet, wenn er Str. Wenn das Muster ein einzelner Raum ist, wird STR auf der Whitespace aufgeteilt, wobei führende Weißespace und mit zusammenhängende Whitespace -Zeichen ignoriert werden.
Wie Sie sehen können, funktioniert das Verhalten, das Sie erwarten, nur mit Whitespace, nicht nur für eine Zeichenfolge.
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
Bei der Aufteilung eines Arrays macht das Konzept von "Whitespace" keinen Sinn mehr. Ich denke also, dass das Verhalten sinnvoll ist, wenn auch vielleicht zuerst nicht intuitiv.