Stride

Ali Çehreli acehreli at yahoo.com
Sun Feb 12 10:13:43 PST 2012


On 02/12/2012 10:07 AM, Ali Çehreli wrote:
> On 02/12/2012 09:37 AM, RenatoL wrote:
>  > Loosing my time on skittles...
>  >
>  > input "abcd"
>  > desired output "arcd"
>  > i want to use stride
>  >
>  > snippet, where x and y are integer in real code:
>  >
>  > string s1 = "abcd";
>  > s1 = s1[stride(s1,x)..y] ~ 'r' ~ s1[2..$];

No matter how much *my* explanation below still makes sense to *me*, :p 
I can't compile that code with dmd 2.057. (?)

>  >
>  > if x = 0 and y = 0 -> run time error. ok
>  > if x = 0 and y = 1 -> "rcd" (??)
>  > if x = 1 and y = 0 -> run time error. ok
>  > if x = 1 and y = 1 -> "rcd"
>  > if x = 0 and y = 2 -> "brcd" (WTF?)
>  > if x = 1 and y = 2 -> "brcd" (...)
>  >
>  > what the hell of parameters have i to put to achieve "arcd"?
>
> This is yet another problem caused by the dual nature of narrow strings.
> When used with algorithms like stride(), a char[] is *not* a
> RandomAccessRange but when used with the [] operator it is.
>
> According the stride()'s documentation, s1 will lose elements through
> popFront() because of not being a RandomAccessRange.
>
> Related question: Does D define the order of evaluation in an expression
> like
>
> foo() ~ bar()
>
> Or is it unspecified as in C and C++?
>
> Ali
>

Ali


More information about the Digitalmars-d-learn mailing list