2401d,d自定义转串函数

原文
嗨,我想为结构自定义toString实现.
所以,为此写了一个插件:

import std.traits : FieldNameTuple;
import std.format : FormatSpec;
import std.conv : to;
import std.range : put;
private mixin template StructToString(S)
{
    
    
    void toString(scope void delegate(const(char)[]) sink, FormatSpec!char fmt)
    {
    
    
        put(sink, typeid(S).toString);
        put(sink, "(\n");
        foreach (index, name; FieldNameTuple!S)
        {
    
    
            put(sink, "  ");
            put(sink, name);
            put(sink, ": ");
            put(sink, this.tupleof[index].to!string);
            put(sink, ",\n");
        }
        put(sink, ")");
    }
}

我觉得已有库提供了类似(为结构和类实现toString的各种方法),但我找不到.
问题是:
以上是完成的"好"方法吗?
是否有库(甚至是Phobos中的某些内容)已提供了一些mixin或等效功能?

在我看来还不错.我会做些小的改动,比如使用typeof(this)而不是S来引用要插件结构类型,但整体方法很好.

样板包有一个GenerateToString插件,与你链接的示例很类似.

猜你喜欢

转载自blog.csdn.net/fqbqrr/article/details/135453396