On Tuesday, 1 October 2024 at 01:00:08 UTC, Andy Valencia wrote:
... A conversion like:

    auto d = atoi!double("123.456");

is about 4k of code.  Nice!


Congratulations on your initiative. D is very flexible with templates, especially with the mixin templates. For example, you might like this one:

```d
template MyCon (T, string str = "0")
{
    MyCon init = str;

    struct MyCon
    {
        string input;
        T value;

        this(string data)
        {
            import std.conv : to;
            value = data.to!T;
            input = data;
        }

        string toString() => input;

        string convertToHex()
        {
            import std.string : format;
            return input.format!"%-(%02X%)";
        }
    }
}


import std.stdio;
void main()
{
    //mixin MyCon!int;/*
    mixin MyCon!int zero;

    // There is an invisible object here: init (struct MyCon)
    zero.init.writeln;  //* 0 */

    // Here is a new object:
    MyCon!double num1 = "3.14";

    num1.writeln; // 3.14
    assert(num1.value == 3.14);

    // and a convenience function... :)
    num1.convertToHex.writeln;
    assert(num1.convertToHex == "332E3134");
}
```

SDB@79

Reply via email to