首页 > 其他分享 >无涯教程-D语言 - 模板(Templates)

无涯教程-D语言 - 模板(Templates)

时间:2023-11-18 12:31:40浏览次数:33  
标签:Templates elements void 无涯 length print stack 模板

模板是通用编程的基础,它涉及以独立于任何特定类型的方式编写代码。

函数模板

将函数定义为模板会将其使用的一种或多种类型保留为未指定状态,以便稍后由编译器推导。在模板参数列表中定义了未指定的类型,该参数介于函数名称和函数参数列表之间。因此,函数模板具有两个参数列表-

  • 模板参数列表
  • 函数参数列表
import std.stdio; 
 
void print(T)(T value) { 
   writefln("%s", value); 
}
  
void main() { 
   print(42);  
   
   print(1.2);
   
   print("test"); 
}

如果我们编译并运行以上代码,这将产生以下输出-


多个参数

可以有多种参数类型。它们显示在下面的示例中。

import std.stdio;
  
void print(T1, T2)(T1 value1, T2 value2) { 
   writefln(" %s %s", value1, value2); 
}

void main() { 
   print(42, "Learnfk");  
   
   print(1.2, 33); 
}

如果我们编译并运行以上代码,这将产生以下输出-

 42 Learnfk 
 1.2 33

类模板

正如我们可以定义函数模板一样,我们也可以定义类模板,下面的示例定义了Stack类,并实现了通用方法来推送和弹出堆栈中的元素。

import std.stdio; 
import std.string; 
 
class Stack(T) { 
   private: 
      T[] elements;  
   public:  
      void push(T element) { 
         elements ~= element; 
      }
      void pop() { 
         --elements.length; 
      } 
      T top() const @property { 
         return elements[$- 1]; 
      }
      size_t length() const @property { 
         return elements.length; 
      } 
}
  
void main() { 
   auto stack=new Stack!string;
   
   stack.push("Learnfk"); 
   stack.push("Toolfk");  
   
   writeln(stack.top); 
   writeln(stack.length); 
   
   stack.pop; 
   writeln(stack.top); 
   writeln(stack.length); 
} 

编译并执行上述代码后,将产生以下输出-

Learnfk 
2 
Toolfk 
1 

参考链接

https://www.learnfk.com/d-programming/d-programming-templates.html

标签:Templates,elements,void,无涯,length,print,stack,模板
From: https://blog.51cto.com/u_14033984/8461070

相关文章

  • 无涯教程-D语言 - 范围(Ranges)
    范围range是元素访问的抽象,范围强调如何访问容器元素,而不是如何实现容器。Numberranges数字范围是非常常用,这些数字范围是int类型的,下面是一些数字范围的示例-//示例1foreach(value;3..7)//示例2int[]slice=array[5..10];PhobosRanges与结构和类接口有关的范围是......
  • 无涯教程-D语言 - 数组(Arrays)
    D编程语言提供了一种名为arrays的数据结构,该数据结构存储相同类型元素的固定大小的顺序集合,数组用于存储数据集合。声明数组要使用D编程语言声明数组,程序员可以指定元素的类型和数组所需的元素数量,如下所示:typearrayName[arraySize];这称为一维数组,arraySize必须是......
  • 无涯教程-D语言 - 字符串(Strings)
    字符数组我们可以用以下两种形式来表示字符数组.第一种形式直接提供大小,第二种形式使用dup方法创建字符串"Goodmorning"。char[9]greeting1="Hellolearnfk";char[]greeting2="Goodmorning".dup;这是使用上述简单字符数组形式的简单示例。importstd.stdio;voidm......
  • 无涯教程-D语言 - 条件判断
    条件判断结构包含要判断的条件以及要执行的两组语句。如果条件为true,则执行一组语句,如果条件为false,则执行另一组语句。D编程语言将任何非零和非空值假定为true,并且如果其值为零或null,则假定为false值。Sr.No.Statement&描述1ifstatementif语句由布尔表达式和一......
  • 学习随笔(设计模式:模板方法模式)
    内容今天学习了模板方法模式,模板是一种面向对象高级语言中常用的编程思想。收获1.模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.模板编程能大大提高代码的复用性,可以在寻找所......
  • 无涯教程-D语言 - 循环语句
    循环语句多次执行一个语句或一组语句,以下是循环语句的一般形式,主要用于编程语言中-D编程语言提供了以下类型的循环来处理循环需求。Sr.No.LoopType&描述1whileloop当给定条件为真时,它将重复一个语句或一组语句。2forloop它多次执行一系列语句,并简化了管理循环变量......
  • Vue3 模板引用 ref 的实现原理
    什么是模板引用ref?有时候可以使用 ref attribute为子组件或HTML元素指定引用ID。<template><inputref="input"/></template><script>import{defineComponent,ref}from"vue";exportdefaultdefineComponent({setup(){......
  • 无涯教程-D语言 - 基本语法
    D语言非常简单易学,让我们开始创建第一个D程序!D示例让我们编写一个简单的D程序,所有D文件都将具有扩展名.d。因此,将以下源代码放入test.d文件中。importstd.stdio;/*我在D中的第一个程序*/voidmain(string[]args){writeln("test!");}假设D环境设置正确,让......
  • Makefile 模板(二)
    Makefile模板模板介绍支持存放中间文件的文件夹检查和创建支持源文件位于不同文件夹内模板OBJOUT:=./out/EXEOUT:=./out/INCLUDE_DIR:=./includeSRC_DIR_TEST=./src/test/SRC_DIR_THREADPOLL=./src/WorkThread/LIB:=-lpthreadSRC:=$(wildcard$(SRC_......
  • 无涯教程-Dart - Optional Parameters with Default Values函数
    默认情况下,还可以为函数参数分配值,但是,此类参数也可以是显式传递的值。语法function_name(param1,{param2=default_value}){//......}示例voidmain(){test_param(123);}voidtest_param(n1,{s1:12}){print(n1);print(s1);}它应该返回......