On Tuesday, 6 February 2018 at 18:46:54 UTC, H. S. Teoh wrote:
On Tue, Feb 06, 2018 at 06:33:02PM +0000, Ralph Doncaster via
Digitalmars-d-learn wrote:
clip
OO is outdated. D uses the range-based idiom with UFCS for
chaining operations in a way that doesn't require you to write
loops yourself. For example:
import std.array;
import std.algorithm;
import std.conv;
import std.range;
// No need to use .toStringz unless you're interfacing with C
auto hex = "deadbeef"; // let compiler infer the type for you
auto bytes = hex.chunks(2) // lazily iterate over `hex` by
digit pairs
.map!(s => s.to!ubyte(16)) // convert each pair to a ubyte
.array; // make an array out of it
// Do whatever you wish with the ubyte[] array.
writefln("%(%02X %)", bytes);
clip
T
Wouldn't it be more accurate to say OO is not the correct tool
for every job rather than it is "outdated". How would one write
a GUI library with chains and CTFE?
Second, while 'auto' is nice, for learning examples I think
putting the type there is actually more helpful to someone trying
to understand what is happening. If you know the type why not
just write it ... its not like using auto saves you any work in
most cases. I understand that its nice in templates and for
ranges and the like, but for basic types I don't see any
advantage to using it.