Why splitter() doesn't work?
Peter Alexander
peter.alexander.au at gmail.com
Sun Oct 14 13:09:43 PDT 2012
On Sunday, 14 October 2012 at 20:03:52 UTC, Mehrdad wrote:
> On Sunday, 14 October 2012 at 19:26:37 UTC, Peter Alexander
> wrote:
>> On Sunday, 14 October 2012 at 09:50:20 UTC, Mehrdad wrote:
>>> Why doesn't code like this work?
>>>
>>> chain(repeat("a").take(5), repeat("b").take(5)).splitter("b");
>>
>> chain doesn't support slicing (and isn't a narrow string), so
>> you can't split it using this function.
>
> Yup, but why does it need slicing?
Well, for example:
splitter("hello world", ' ')
gives
["hello", "world"]
The splits are slices of the original range.
splitter could allocate new ranges, but if you want that
behaviour then it's better to specify it manually:
chain(repeat("a").take(5),
repeat("b").take(5)).array().splitter("b");
That works, giving:
[["a", "a", "a", "a", "a"], [], [], [], [], []]
I wonder if a better design for splitter would automatically
allocate an array when the input range doesn't support slicing?
More information about the Digitalmars-d
mailing list