`
阿尔萨斯
  • 浏览: 4185394 次
社区版块
存档分类
最新评论

D语言泛型

 
阅读更多

比C++容易的泛型。

看看下面简单的例子:

module testContainer;
import std.stdio;
import std.container;
void main(){
SList!int myList;
foreach(i;0..10){
myList.insert(i);
}
foreach(element;myList){
writeln(element);
}
}

现在来定义个User类,放入SList中:

module freebird;
import std.string;
class User{
private:
string name;
public:
void setName(string argName){
name = argName;
}
string getName(){
return name;
}
}
main.d file:
module testContainer;
import std.stdio;
import std.container;
import std.format;
import freebird;
import std.conv;
void main(){
SList!User users;
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.insert(user);
}
foreach(curUser;users){
writeln(curUser.getName());

编写自己的模板,有一个Users类,内部管理了很多User对象。可以用在多线程和单线程环境下,因此接受一个模板策略类Lock。

main.d文件

void main(){
alias UserTemplate!(MutexLock).Users UsersType;
UsersType users = new UsersType();
foreach(i;0..10){
string part1 ="name";
string part2 = to!string(i);
string name = part1 ~ part2;
User user = new User();
user.setName(name);
users.add(user);
}
foreach(curUser;users.getValues()){
writeln(curUser.getName());
}
}
users.d文件

module freebird.users;
import std.container;
import freebird.user;
//Pass MutexLock if you are in multi-thread context
//Pass NoneLock if you are in single-thread context
template UserTemplate(Lock){
class Users{
private:
SList!User values;
Lock l;
public:
this(){
l = new Lock();

lock.d文件

module freebird.lock;
import std.stdio;
class MutexLock{
public:
void lock(){
writeln("mutex lock");
}
void unlock(){
writeln("mutex unlock");
}
};
class NoneLock{
public:
void lock(){
writeln("nothing lock");
}
void unlock(){
writeln("nothing unlock");
}
}





分享到:
评论

相关推荐

    c#中的泛型

    泛型:泛型是程序设计语言的一种特性,通过参数类型来实现在同一封代码上操作多个数据类型,例如List 泛型的作用:提高了性能,避免了装箱拆箱,提高了代码的重用性,

    数据结构与算法分析_Java语言描述(第2版)]

    目录: 译者序前言第1章 引论1.1 本书讨论的内容1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数1.2.4 模运算1.2.5 证明的方法1.3 递归简论1.4 实现泛型特性构件pre-Java51.4.1 使用Object表示泛型1.4.2 基本类型...

    R语言循环For while

    编程中减少代码重复的两个工具,一是循环,一是函数。 循环,用来处理对多个同类输入做相同事情(即迭代),如对不同列做相同操作、...library(tidyverse) df ( a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rno

    数据结构与算法分析Java语言描述(第二版)

    目录译者序前言第1章 引论1.1 本书讨论的内容1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数1.2.4 模运算1.2.5 证明的方法1.3 递归简论1.4 实现泛型特性构件pre-Java51.4.1 使用Object表示泛型1.4.2 基本...

    数据结构与算法分析 Java语言描述第2版

    内容截图目录:译者序前言第1章 引论1.1 本书讨论的内容1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数1.2.4 模运算1.2.5 证明的方法1.3 递归简论1.4 实现泛型特性构件pre-Java51.4.1 使用Object表示泛型1.4.2 ...

    数据结构与算法分析_Java语言描述(第2版)

    中文名: 数据结构与算法分析_Java语言描述(第2版) 作者: 韦斯 译者: 冯舜玺 图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 机械工业出版社 书号: ISBN:9787111231837 发行时间: 2009年01月01日 地区: 大陆 ...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    6.4.2 事件模拟 6.5 d-堆 6.6 左式堆 6.6.1 左式堆性质 6.6.2 左式堆操作 6.7 斜堆 6.8 二项队列 6.8.1 二项队列结构 6.8.2 二项队列操作 6.8.3 二项队列的实现 6.9 标准库中的优先队列 小...

    数据结构与算法分析-Java语言描述(第2版)_1_2

    6.4.2 事件模拟 6.5 d-堆 6.6 左式堆 6.6.1 左式堆性质 6.6.2 左式堆操作 6.7 斜堆 6.8 二项队列 6.8.1 二项队列结构 6.8.2 二项队列操作 6.8.3 二项队列的实现 6.9 标准库中的优先队列 小...

    实验项目D、Java应用专题编程

    5、理解内部类、泛型、反射和注解等专题技术。 ★专题:常用类和接口★ 1、初步掌握字符串类的常用方法。 2、初步掌握日期和日期格式类的使用。 3、了解大数类的使用。 4、初步了解和掌握Java集合框架。 5、掌握...

    java案例程序,关于基础和面向对象

    ava是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 任职于Sun微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak...

    NET组件程序设计 第2版中文版.part3.rar )

    作 者:[美] 洛威 (Lowy,J.) 著 刘如鸿 译 出 版 社:电子工业出版社 出版时间:2007-06-01 本书主要介绍了设计和开发基于组件的.NET应用程序所需要的技术及相关...附录D:泛型 附录E:C#编码标准 索引 收起全部

    printbf:printf中的Brainfuck解释器

    攻击者可以通过格式字符串漏洞(其中,由攻击者控制的字符串用作类似printf的语句的第一个参数)来控制printf语句,或者如果攻击者可以通过(例如)泛型来控制printf语句的第一个参数内存损坏。 请参阅下面实际的...

    《Visual C# 2008大学教程 第3版》.(刘文红).[PDF]&ckook.pdf

    中文名: Visual C# 2008大学教程(第三版) 原名: Visual C# 2008 How to Program, 3rd ...附录D ATM案例研究代码 附录E UML2的其他框图 附录F ASCII字符集 附录G Unicode 附录H 使用Visual Studio2008调试器 索引

    C++ 可视教材PPT

    1990 年, Template(模板) 和 Exception(异常) 加入到了 C++ 中,使 C++ 具备了泛型编程(Generic Programming)和更好的运行期错误处理方式。 1991 年,负责 C++ 语言国际标准化的技术委员会工作组 ISO/IEC JTC1/SC22...

    Visual Basic 2010 .NET 4高级编程(第6版)

    第Ⅰ部分 语言结构和环境 第1章 Visual Studio 2010 第2章 对象和Visual Basic 第3章 定制对象 第4章 公共语言运行库 第5章 用Visual Basic进行声明式编程 第6章 异常处理和调试 第7章 测试驱动的开发第Ⅱ部分 业务...

    Visual Basic 2010 .NET 4高级编程(第6版) PART1

    第Ⅰ部分 语言结构和环境 第1章 Visual Studio 2010 第2章 对象和Visual Basic 第3章 定制对象 第4章 公共语言运行库 第5章 用Visual Basic进行声明式编程 第6章 异常处理和调试 第7章 测试驱动的开发第Ⅱ部分 业务...

    Visual Basic 2010 .NET 4高级编程(第6版)PART2

    第Ⅰ部分 语言结构和环境 第1章 Visual Studio 2010 第2章 对象和Visual Basic 第3章 定制对象 第4章 公共语言运行库 第5章 用Visual Basic进行声明式编程 第6章 异常处理和调试 第7章 测试驱动的开发第Ⅱ部分 业务...

    程序员面试刷题的书哪个好-effective-cpp-note:EffectiveC++、MoreEffectiveC++和Effective

    程序员面试刷题的书哪个好 Note Of Effective C++ And More Effective C++ 这个文件包含了三本书的详细知识点,想要快速过一下的话可以看这个 Effective ...为一个语言联邦 ...主要是因为C++是从四个语言发展出来的: ...#d

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    1.3.4 托管执行和公共语言基础结构 16 1.3.5 C#和.NET版本 17 1.3.6 CIL和ILDASM 18 1.4 小结 20 第2章 数据类型 21 2.1 基本数值类型 21 2.1.1 整数类型 22 2.1.2 浮点类型 23 ...

Global site tag (gtag.js) - Google Analytics