Re: Strange behavior std.range.takeNone

2015-04-07 Thread Dennis Ritchie via Digitalmars-d-learn

On Tuesday, 7 April 2015 at 08:49:58 UTC, Andrea Fontana wrote:

Yes it is.

takeNone() take a char from a string.

So you are going to append a char (with code 5) on the next 
line.

If you replace that line with:

s ~= 65;

it will print "A".  (65 is ascii code for letter 'A')


Thanks. I am aware :)


Re: Strange behavior std.range.takeNone

2015-04-07 Thread Andrea Fontana via Digitalmars-d-learn

Yes it is.

takeNone() take a char from a string.

So you are going to append a char (with code 5) on the next line.
If you replace that line with:

s ~= 65;

it will print "A".  (65 is ascii code for letter 'A')

On Tuesday, 7 April 2015 at 02:24:00 UTC, Dennis Ritchie wrote:

Hi,
Is it OK?

-
import std.stdio : writeln;
import std.range : takeNone;

void main() {

auto s = takeNone("test");

s ~= 5;

writeln(s); // prints ♣
}
-
Windows 8.1 x64, DMD 2.067.0




Re: Strange behavior std.range.takeNone

2015-04-06 Thread Dennis Ritchie via Digitalmars-d-learn

On Tuesday, 7 April 2015 at 02:24:00 UTC, Dennis Ritchie wrote:

Is it OK?
Although, perhaps, everything is fine. I just thought that 
creates takeNone not string type string, and the string array of 
type string[].


import std.stdio : writeln;

void main() {

string s;

s ~= 5;

writeln(s); // prints ♣
}

So I mixed up with this case. Everything is OK.

import std.range : takeNone;

void main() {

auto s = takeNone(["test"]);

// s ~= 5; // Error: cannot append type int to type string[]
}