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