On 7/1/15 1:00 PM, Taylor Hillegeist wrote:
When I run the code (compiled on DMD 2.067.1):
------------------------------------------------------
import std.algorithm;
import std.stdio;
import std.range;
string A="AaA";
string B="BbBb";
string C="CcCcC";
void main(){
int L=25;
int seg1len=(L-B.length)/2;
int seg2len=B.length;
int seg3len=L-seg1len-seg2len;
(A.cycle.take(seg1len).array
~B.cycle.take(seg2len).array
~C.cycle.take(seg3len).array).writeln;
string q = cast(string)
(A.cycle.take(seg1len).array
~B.cycle.take(seg2len).array
~C.cycle.take(seg3len).array);
q.writeln;
}
-----------------------------------------------
I get a weird result of
AaAAaAAaAABbBbCcCcCCcCcCC
A a A A a A A a A A B b B b C c C c
C C c C c C C
Any ideas why?
Schizophrenia of Phobos.
Phobos thinks a string is a range of dchar instead of a range of char.
So what cycle, take, and array all output are dchar ranges and arrays.
When you cast the dchar[] result to a string, (which is a char[]), it
then treats all the 0's in each dchar element as '\0', printing a blank
apparently.
-Steve