如何只分配多个返回值?

时间:2015-10-27 00:57:06

标签: tuples variable-assignment d multiple-return-values

传统上,这是通过1. error: invalid use of incomplete type 'class Manager <MyManager<MyConfig> >' 2. error: declaration of 'class Manager<MyManager<MyConfig> >' class Manager; 3. error: no type name '_table' in "class Processor<MyManager<MyConfig> >' I'm not calling this from a specialized function, so I'm not sure why I'm getting this. 参数完成的,例如:

out

使用元组可以将其重写为

void notfun(ushort p, out ubyte r0, out ubyte r1)
{
    r0 = cast(ubyte)((p >> 8) & 0xFF);
    r1 = cast(ubyte)(p & 0xFF); 
}

不幸的是,结果不能直接赋值给变量元组:

auto fun(ushort p)
{
    import std.typecons;
    return tuple
    (
        cast(ubyte)((p >> 8) & 0xFF) ,
        cast(ubyte)(p & 0xFF)
    );
}

是否有特殊语法允许类似

的内容
void main(string[] args)
{
    ushort p = 0x0102;
    ubyte a,b;
    // ugly brute cast!
    *(cast(ReturnType!(typeof(fun))*) &a) = fun(0x0102) ;
}

或任何其他惯用的方法来做类似的事情?

1 个答案:

答案 0 :(得分:6)