Dlang:如何在模板函数上强制执行接口

时间:2016-12-23 00:17:58

标签: d

我一直在谷歌上搜索两个小时没有运气。

如果我有模板功能,并且我想在模板类型上强制实施接口,我该怎么做?

离。

Box.aggregate([
    //the whole aggregation here
], function(err, result) {

});

2 个答案:

答案 0 :(得分:6)

您可以使用模板约束来执行此操作:

lStoredProc := tFDStoredProc.Create (Application);
  with lStoredProc do begin
        Connection     := dmSysData.SysData_Connection;
        StoredProcName :=   DoubleQuotedStr ('ButtonGroupName_proc');
        Params.Clear;
        Params [0] := tFDParam.Create (Params, ptInput);
        Params [0].Name := 'ButtonGroupName';
        ParamByName ('ButtonGroupName').Value := 'ButtonGroup_System_Tasks';
        Open;
           while   not Eof do begin
                 lButtonName := Fields [0].Value;
                  Next;
           end;

void doStuff(T)(bool param) if(is(T : Throwable)) { } 表达式可能非常复杂,因此我建议您仔细阅读this

答案 1 :(得分:4)

另一种方法,而不是使用is关键字,如mitch _的答案就是这样。

void doStuff(T : Throwable)(bool param) { }

请参阅:https://dlang.org/spec/template.html#TemplateTypeParameterSpecialization