|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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. Christopher |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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. |
|
![]() |
| Outils de la discussion | |
|
|