digitalmars.D.learn - Strange behavior std.range.takeNone
- Dennis Ritchie (12/12) Apr 06 2015 Hi,
- Dennis Ritchie (18/19) Apr 06 2015 Although, perhaps, everything is fine. I just thought that
- Andrea Fontana (7/19) Apr 07 2015 Yes it is.
- Dennis Ritchie (2/9) Apr 07 2015 Thanks. I am aware :)
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
Apr 06 2015
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[] }
Apr 06 2015
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
Apr 07 2015
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 :)
Apr 07 2015









"Dennis Ritchie" <dennis.ritchie mail.ru> 