0
点赞
收藏
分享

微信扫一扫

d插件构造器


import std.array, std.exception, std.stdio;

mixin template RealizeException() {
this(string msg, string file = __FILE__, size_t line = __LINE__) {
super(msg, file, line);
}
}//插件构造器.

class WrongUsage : Exception {
mixin RealizeException;

this(string[] messages, string file = __FILE__, size_t line = __LINE__) {
auto msg = std.array.join(messages, "\n");
super(msg, file, line);
}
}

void main() {
throw new WrongUsage("Error message.");
}

不工作,替换为​​真实​​,工作.

​​链接​​

类似这样:

mixin template methodMix()
{
void foo(int n) { }
}

mixin template operatorMix()
{
void opBinary(string op)(int n) { }
}

mixin template ctorMix()
{
this(int n) { }
}

struct MethodTest
{
mixin methodMix mix;

alias foo = mix.foo;

void foo(string s) { }
}

struct OperatorTest
{
mixin operatorMix mix;
alias opBinary = mix.opBinary;
void opBinary(string op)(string s) { } // [1]
}

struct CtorTest
{
mixin ctorMix mix;

//alias this = mix.this;//行不行?

this(string s) { }
}

void main()
{
MethodTest mt;
mt.foo(3);

OperatorTest ot;
ot + 3;

auto ct = CtorTest(3); // [2]
}

如果按正确顺序,你可这样:

alias __ctor = mixin_thing.__ctor;



举报

相关推荐

构造器/构造方法

构造方法构造器的学习

java构造器

Python构造器

scala构造器

条件构造器

构造器详解

Java构造器

0 条评论