文档章节

d语言的const,immutable修饰符

轻舞凋零
 轻舞凋零
发布于 2016/02/01 14:43
字数 277
阅读 18
收藏 0

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


import std.stdio;
import std.conv;

//const immutable share

struct Point { int x,y; }

class A{
	
	int a,b;
	string name;

	int[] fun(){
		return [1,2];
	}
	int [] gun() immutable{
		return [1,2];
	}
	immutable int[] hun(){
		return [1,2];
	}
	immutable(int)[] iun() immutable{
		return [1,2];
	}

	this() immutable{
		a = 1;
		b = 1;
		name = "immutable";
	}
	void setA(int a){
		this.a = a;
	}
}

struct S{
	private int[] a;
	this(immutable(S)source){
		a = to!(int[])(source.a);
	}
	this(S source) immutable{
		a = to!(immutable(int[])) (source.a);
	}
}

void print(immutable(int[]) data){
	writeln(data);
}
void printNew(const(int[]) data){
	writeln(data);
}

//inout change
inout(char)*strchr(inout(char)*input ,int c);



unittest {
	immutable (int[]) mydata = [10,20];
	print(mydata);
	printNew(mydata);
	printNew([1,2]);

	S aa;
	auto b = immutable(S) (aa);
	writeln(typeid(typeof(b.a)));
	auto c = S(b);
	writeln(typeid(typeof(c.a)));


	immutable(int) over = 1;
	//over++;
	auto bod = over;
	//bod++;
	immutable p = 1.25;
	auto stru_p = immutable(Point)(0,0);
	auto stru_p2 = stru_p;
	assert(is(typeof(stru_p2.x) == immutable(int)));

	alias immutable (int[]) T1;
	alias immutable (int)[] T2;

	T1 t1_a = [1,2,3];
	//t1_a[1] = 10;
	//t1_a = [4,5,6];
	T2 t2_a = [1,2,3];
	t2_a = [4,5,6];
	//t2_a[0] = 999;

	//can't modify immutable data
	auto objA = new immutable(A);
	//auto objB = new A();//error
	assert(objA.a == 1);
	//objA.setA(11); //error can't modify
	//objA.a = 11;//error

	//immutable change int to other
	int changeA = 1;
	immutable(int) changeB = changeA;
	assert(changeB == 1);
	int changeC = changeB;

	int[] arrA = [1];
	//immutable (int[]) arrB = arrA;






}


© 著作权归作者所有

共有 人打赏支持
轻舞凋零
粉丝 13
博文 100
码字总数 16794
作品 0
昌平
程序员
C++雾中风景3:const用法的小结

const作为C与C++共有的关键字,很多使用的方式大同小异。但由于C++是一门面向对象的语言,在类和对象中有更多的使用规则。之前学习C语言的时候就被const这个关键字搅得焦头烂额,正巧也借这篇...

LeeHappen
2017/11/27
0
0
细说使用const修饰符的好处

声明:以前只知道要多用const,却不知为什么。今天看我以前写的代码时,突然间领悟了添加const修饰符的好处妙处,加上以前的理解,在这里做一个总结。 我们都知道const修饰符对所修饰的对象所...

zhanxinhang
2011/07/23
0
0
const关键字的作用

const类型定义:指明变量或对象的值是不能被更新,引入的目的是为了取代预编译指令 ××××××常量必须被初始化××××××××××××××× const的作用 A 可以定义const常量,如 cons...

jackhen
2016/04/10
15
0
C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao
06/22
0
0
关于const char*和char*、const char** 和char** 赋值问题

根据ANSI C标准的赋值约束条件: 1. 两个操作数都是指向有限定符或无限定符的相容类型的指针。 2. 左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。 一、const char和char co...

余二五
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java工程师用spring boot和web3j构建以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结...

笔阁
9分钟前
1
0
聊聊sentinel的SentinelWebAutoConfiguration

序 本文主要研究一下sentinel的SentinelWebAutoConfiguration SentinelWebAutoConfiguration spring-cloud-alibaba-sentinel-autoconfigure-0.2.0.BUILD-SNAPSHOT-sources.jar!/org/springf......

go4it
11分钟前
0
0
java ArrayList 根据对象内的属性排序

//根据修改时间排序Comparator com = new Comparator<ReleaseInfo>() {public int compare(ReleaseInfo reInfo1, ReleaseInfo reInfo2) { //return reInfo2.getModifyTime().c......

成长中的小白
12分钟前
0
0
PowerDesigner p f m

(非原创) P:PirmaryKey 主键 F:ForeignKey 外键 M:Mandatory 强制要求(不能为空) 主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从...

森火
12分钟前
0
0
Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部