Manipulate slice or specific element of range and return range
Timoses
timosesu at gmail.com
Wed Mar 28 12:51:23 UTC 2018
On Thursday, 22 March 2018 at 07:34:18 UTC, David Bennett wrote:
> On Thursday, 22 March 2018 at 04:49:39 UTC, Seb wrote:
>> ```
>> alias lowercased = (m, n) =>
>> m.take(n).asLowerCase.chain(m.drop(n));
>> ```
>
> ```
> string input = "My Capital String";
> auto lower1 =
> input.take(1).asLowerCase.chain(input.drop(1).filter!(c => c !=
> ' ')).array;
> assert(lower1 == "myCapitalString");
> ```
>
> Also a few more options (including a slice version):
>
> https://run.dlang.io/is/dZHcSo
>
> As the input is never read until the array() is run, each
> element in the array should only be copied from RAM to the
> stack once.
>
> And if you compile with LDC a lot of it can be inlined and the
> stack copies of the range structs and elements should be
> minimised even further.
Very inspiring snippets!
More information about the Digitalmars-d-learn
mailing list