文档章节

d语言之类

轻舞凋零
 轻舞凋零
发布于 2016/02/01 14:27
字数 453
阅读 18
收藏 0
点赞 1
评论 0

参考自d程序设计语言---我的博客http://my.oschina.net/u/218155/blog?fromerr=SwOkb7Sw fllow me

d语言的类,同所有的支持oop的语言一致,只是有一点点差别

类的一些基本属性

    enum,static变量,他们初始化一次后不可改变

     支持普通的方法

构造器语法 为this()和    ~this()

也支持静态构造器 static this() static ~this()

final可以定义不可覆盖的类       

 类也支持property方法           

this() 的执行顺序是: 分配内存,初始化,冠名,构造函数的调用

~this()的步骤 对象冠名后是活的。所有引用消失,检查是否可以回收,某个时间点回收,释放已解除分配的对象

完整的例子

import std.stdio;


class CrawlerParser {

	enum my_flate = 2;
	static immutable defualtOpt = "byCurl";
	string currentOpt = defualtOpt;
	
	uint catchTime,catchWait;	

	static CrawlerParser instance;
	static int test_static ;
	static this(){
		//instance = new CrawlerParser;
		test_static = 11;
	}

	static string getDefualtOpt(){
		return defualtOpt;
	}

	uint getCatchTime(){
		return catchTime;
	}
	uint getCatchWait(){
		return catchWait;
	}
	final void runFinal(){
		writeln("run final");
	}
	string crawlerIt(){
		return "crawler";
	}

	this(uint catchTime){
		//this.catchTime = catchTime;
		this(catchTime,uint.init);
	}
	this(uint catchTime,uint catchWait){
		this.catchTime = catchTime;
		this.catchWait = catchWait;
	}
	CrawlerParser func(){
		//this = new CrawlerParser();
		return this;
	}

	this() {
		
	}
	~this(){
		writeln("free data");
	}
	static ~this(){
		writeln("static free data");
	}

}
/*
class XMLCrawlerParser : CrawlerParser{
	this(){

	}
	
	override void crawlerIt(){
		writeln("crawler it");
	}

}*/


unittest{
	//define d
	auto cp = new CrawlerParser();
	assert(CrawlerParser.getDefualtOpt() == "byCurl");
	cp.catchTime = 3;
	assert(cp.getCatchTime() == 3);

	//d object refence
	auto cp2 = cp;
	cp.catchTime = 4;
	assert(cp.getCatchTime() == 4);
	CrawlerParser cp3 = new CrawlerParser();
	assert(cp3 !is null);
	cp3.catchTime = 5;
	assert(cp.getCatchTime() == 4);

	//this() 分配内存,初始化,冠名,构造函数的调用
	CrawlerParser cp4 = new CrawlerParser(1);
	assert(cp4.getCatchTime() == 1);
	assert(cp4.getCatchWait() == 0);

	//~this()的步骤 对象冠名后是活的。所有引用消失,检查是否可以回收,
	//某个时间点回收,释放已解除分配的对象
	destroy(cp2);
	assert(cp2 !is null);
	assert(cp !is null);
	//static this
	assert(CrawlerParser.test_static == 11);
	//static this的调用顺序是先引入线调用,析构函数相反

	//XMLCrawlerParser xcp = new XMLCrawlerParser;
	//assert(CrawlerParser.crawlerIt()== "crawler");
	//xcp.crawlerIt();
}


© 著作权归作者所有

共有 人打赏支持
轻舞凋零
粉丝 13
博文 100
码字总数 16794
作品 0
昌平
程序员
10月编程语言排行榜:不成大器的D语言

【51CTO独家特稿】今天Tiobe发布了2011年10月编程语言排行榜,本期排行榜我们看到Lua这门语言蹿升很快,而传统的竞争对手C#和PHP正在交替自己的位置。Assembly(汇编语言)正在大踏步的向后退...

zjf_sdnu
2011/10/17
0
0
系统级编程语言性能大PK的笑话-Go语言

喜欢和不喜欢Go语言的都喜欢拿性能PK说事. 流传比较广的是benchmarksgame的PK数据: http://benchmarksgame.alioth.debian.org/u64q/go.php 在 benchmarksgame测试中, Go语言的性能已经由之前...

chai2010
2013/08/06
0
7
Dlang 2.080.0 版本发布,系统级编程语言

近期D语言在版本发布迭代速度上有明显提升,此次D语言 2.080.0 版本更新特性如下: 增强编译时特性可用性 提供更好的 Objective-C 兼容 废弃一些早期版本不推荐使用的类和方法 对标准库的多方...

冰力
05/13
0
0
LDC 1.9.0 发布,基于 LLVM 架构的 D 语言编译器

Kinke 代表LDC团队,很高兴地宣布LDC 1.9,这个版本的重点是: 编译器兼容 dlang 2.079.1 (引入了新的 -i 参数来支持最小D语言运行时); 支持 llvm 6,用于所有预构建包(Win32除外); 可...

冰力
05/13
0
3
Linux C++ 环境搭建 IDE选择 Code::Blocks

在linux下面IDE还是挺多的。 本来打算用elcipse的,但是发现了一个更好更快的C++IDE http://www.codeblocks.org/ Code::Blocks 是一个C++免费的跨平台IDE。 1,下载安装 下载地址: http...

freewebsys
2012/12/01
0
0
hunt framework v1.1.0 发布,帮助开发者提升效率

hunt framework 本次版本主要对易用性进行升级,为了能让更多PHP开发者更容易的去使用D语言框架我们也尝试的引入了类似PHP的一些函数定义。 本次版本主要改进如下: 增加Task工作模式 在Act...

冰力
06/22
0
0
D 语言数据库驱动层 - Dbal

Dbal 是 HuntLabs 开发的D语言(dlang)数据库驱动层,类似 PHP 的 PDO、JAVA 的 JDBC,内置连接池支持。 目前支持的数据库驱动: PostgreSQL 8+ MySQL 5.1+ SQLite 3+ 示例代码 import std...

冰力
05/14
0
0
Hunt framework 1.1.1 发布,可用性修复

Hunt是D语言编写的全栈 web framework,拥有和 C++ 相媲美的性能,有带来的和 PHP、JAVA 一样简单的使用方式,可以看做是 dlang 编写的 Laravel / Spring boot / Django / Rails 框架。 最近...

冰力
06/23
0
0
研发周报:Facebook开源flint 基于D语言的C++静态代码分析器

在过去的一周,Ruby发布了2.1.1版本,并且迎来了它的21岁生日。在开源方面, Facebook开源基于D语言编写的C++静态代码分析器flint 。flint的主要功能是自动提示警报信息。例如,在代码审核系...

LiSteven
2014/05/11
0
0
Hunt framework 1.0.0 正式版,三年来最大更新

Hunt framework 通过三年的不断完善,HuntLabs 所有成员很高兴的对外宣布 hunt 1.0.0 正式版,经过了 0.4.x / 0.5.x / 0.7.x / 0.9.x / 0.10.x 的一些重要分支,我们改进了很多不方便使用的地...

冰力
06/04
0
23

没有更多内容

加载失败,请刷新页面

加载更多

下一页

防火墙实例

3、一个包过滤防火墙实例 环境:redhat9 加载了string time等模块 eth0 接外网──ppp0 eth1 接内网──192.168.0.0/24 #!/bin/sh modprobe ipt_MASQUERADE modprobe ip_conntrack_ftp modp...

李超小牛子
3分钟前
0
0
TensorFlow 作用域与操作符的受限范围

variable_scope 影响变量和操作符 name_scope 只影响操作符 with tf.name_scope(""),使用空字符串将作用域返回到顶层 tf.variable_scope("") 相当于添加一个空层 import tensorflow as tf...

阿豪boy
13分钟前
0
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
15分钟前
0
0
崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
31分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
33分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
38分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
40分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
43分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
50分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
53分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部