文档章节

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;






}


© 著作权归作者所有

共有 人打赏支持
上一篇: d语言之异常
下一篇: d语言之struct
轻舞凋零
粉丝 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
C++难点解析之const修饰符

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

jackie8tao
06/22
0
0
const关键字的作用

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

jackhen
2016/04/10
15
0
Delphi 函数参数修饰中的var 、out和const

(1)var修饰符 添加var 是地址传递,会修改原有的变量 var s: string; begin S := 'Hello'; ChangeSVar(s); ShowMessage(S); end; // ChangeSVar 定义 procedure TForm1.ChangeSVar(var A:......

dillonxiao
04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
17分钟前
2
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
85
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
20
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
29
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部