Поиск…


Синтаксис

  • Идентификатор шаблона (TemplateParameterList) {...}
  • Идентификатор структуры (TemplateParameterList) {...}
  • идентификатор класса (TemplateParameterList) {...}
  • Идентификатор ReturnType (TemplateParameterList) (ParameterList) {...}
  • Идентификатор! (TemplateInvocationList)

Функция с одним шаблоном

import std.stdio;

T min(T)(in T arg1, in T arg2) {
    return arg1 < arg2 ? arg1 : arg2;
}

void main() {
    //Automatic type inference
    writeln(min(1, 2));
    
    //Explicit type
    writeln(min!(ubyte)(1, 2));
    
    //With single type, the parenthesis might be ommited
    writeln(min!ubyte(1, 2));
}

шаблон

Шаблон можно ввести с помощью template . Он может содержать функции и классы и другие конструкции.

template StaticArray(Type, size_t Length) {
     class StaticArray {
          Type content[Length];
          
          size_t myLength() {
            return getLength(this);
          }
     }
     
     private size_t getLength(StaticArray arr) {
          return Length;
     }
}

void main() {
    StaticArray!(int, 5) arr5 = new StaticArray!(int, 5);
    import std.stdio;
    writeln(arr5.myLength());
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow