获取成员声明中使用的范围类型

eco*_*eco 4 d

我有一个复杂的范围,我想分配给一个类的数据成员.

chain(nicklist,
      map!(a=>format("%s%d", nicklist[0], a))(sequence!"n+1"()))
Run Code Online (Sandbox Code Playgroud)

nicklist只是一个string[].通常我的可信赖的朋友auto会照顾这个,但对于数据成员我需要声明类型,我不知道该类型应该是什么.我试图找出如何使用typeof()它来获取它,但运行时参数让我困惑,我无法弄清楚如何制定它.

(这是用于IRC机器人.nicklist是我希望它按顺序尝试的缺刻列表,在它已经耗尽了所有那些带有缺口碰撞的缺口后,它只会尝试附加数字的第一个缺口)

Jon*_*vis 6

这可行:

typeof(chain(cast(string[])[], map!(a=>format("%s%d", "", a))(sequence!"n+1"()))) memberVar;
Run Code Online (Sandbox Code Playgroud)

另一种可能性是让函数包装它然后获取它的返回类型并使用它:

auto func(string[] nicklist)
{
    return chain(nicklist,
                 map!(a=>format("%s%d", nicklist[0], a))(sequence!"n+1"()));
}

ReturnType!func memberVar;
Run Code Online (Sandbox Code Playgroud)

ReturnType 在std.traits.