I've just been tripped up by this behaviour, which I haven't
seen documented anywhere:
"hello".to_a #=> ["hello"]
"".to_a #=> []
Why does an empty string get omitted from the array?
Why doesn't Enumerable#to_a document this behaviour of strings?
This is completely broken (Ruby 1.8.6)
This affected me in a call to send() using a splat - it always
works ok except when the parameter list is an empty string :-(.
Clifford Heath.
I disagree. #to_a doesn't just encase the string object in an
otherwise empty array, rather it casts the string to an array, as
appropriate:
"".to_a =>
"test".to_a => ["test"]
"this\nis\na\n\test".to_a => ["this\n", "is\n", "a\n", "test"]
The array equivalent of an empty string is an empty array. Both, for
instance, have a #size of 0.
Christopher
···
On 3/11/08, Clifford Heath <no@spam.please.net> wrote:
I've just been tripped up by this behaviour, which I haven't
seen documented anywhere:
"hello".to_a #=> ["hello"]
"".to_a #=>
Why does an empty string get omitted from the array?
Why doesn't Enumerable#to_a document this behaviour of strings?
This is completely broken (Ruby 1.8.6)
Christopher Swasey wrote:
···
On 3/11/08, Clifford Heath <no@spam.please.net> wrote:
I've just been tripped up by this behaviour, which I haven't
seen documented anywhere:
"hello".to_a #=> ["hello"]
"".to_a #=>
Why does an empty string get omitted from the array?
Why doesn't Enumerable#to_a document this behaviour of strings?
This is completely broken (Ruby 1.8.6)
I disagree. #to_a doesn't just encase the string object in an
otherwise empty array, rather it casts the string to an array, as
appropriate:
"".to_a =>
"test".to_a => ["test"]
"this\nis\na\n\test".to_a => ["this\n", "is\n", "a\n", "test"]
The array equivalent of an empty string is an empty array. Both, for
instance, have a #size of 0.
To add to that: the way I've understood it is that, in the context of a String, the Enumerable methods treat it as an enumeration of lines.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
Joel VanderWerf wrote:
To add to that: the way I've understood it is that, in the context of a String, the Enumerable methods treat it as an enumeration of lines.
Right, that does make sense now, thanks folk.
Enumerable is built on #each, and String#each does that.
Clifford Heath.