Stride
Ali Çehreli
acehreli at yahoo.com
Sun Feb 12 10:07:52 PST 2012
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..$];
>
> 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
More information about the Digitalmars-d-learn
mailing list