D語言變量的定義

參考自d程序設計語言---個人博客http://my.oschina.net/u/218155/blog?fromerr=SwOkb7Sw fllow mejava

變量是語言最基礎的部分,咱們經過變量去表示數據。代碼最最底層的都是這些基礎的數據類型。
數組

D語言提供了整型,浮點型,字符型變量。函數

d語言能夠讓你像腳本語言同樣自由的使用變量。ui

使用auto關鍵字spa

例如 auto a = 1.0; auto f = 1;

D語言也定義了string類型,讓你輕鬆的處理字符串 string在D中其實是immutable(char)[]類型.net

單個字符是不能夠改變.immutable不可變的。設計

string s = "abc";
s[0] = 'd';//error
s = "adfad"; //ok

d語言也提供其餘的字符類型code

wstring wsx = "helolow oorld";
dstring dsx = "hellow aadfads";

獲取類型的標識方法typeoform

typeid(typeof(ss1))

咱們也能夠經過typeof定義新的變量blog

typeof(s) a = "ddd";


數組的定義.在D中固定長度的數組和動態數組稍有不一樣

 固定長度的數組  int arr[3] = [1,2,3];
動態數組:auto arr[] = [1,2,3];

關聯數組定義

int[string] myarr2 = ["pi":12,"kk":33,"son":123];
或auto myarr2 = ["pi":12,"kk":33,"son":123];

D中函數的定義

auto fff = function double(int x){return x/10.;};
或者double function(int) fff2 = function double(int x){return x/10.;};

D中若是函數想運用外部變量使用delegate代替function,delegate效率比function低,由於他得維持一堆信息

auto ffc = 2;
auto fff3 = delegate double(int x) {return ffc*x/10.;};

D中用is作類型判斷.is包括以下四種狀況

1 判斷類型是否存在
is(int[]);
2 判斷兩個類型是否相等
is(int == uint);
3 判斷int可否轉換爲unit
is(int : uint));
4 判斷一些內部的類型好比方法,struct
is(typeof(f2) == function)

我寫的簡單例子

import std.stdio;


void main() {
	auto a = 1;
	auto b = 1E2f;
	writeln(a,b);
	string ss = "hi";
	string ss1 = r"ss1";
	auto ss2 = x"0A";
	writeln(ss,ss1,ss2);
	int arr[2] = [1,2];
	int[string] arr2 = ["a":1,"b":2];
	writeln(typeid(typeof(ss1)),ss1.length,arr,arr2);

	auto  f = function double(int x){return x/10;};
	double function(int x) f2 = function double(int x){return x/10;};
	writeln(f(11),f2(11));
	auto f3 = delegate double(int x){return (x+a)/10;};
	writeln(f3(9));
	assert(1==1);
	string ss11 = "a123 = 21;";
	ss11 ~= "";
	//mixin(ss11);
	writeln(a,ss11);

	writeln(is(int[]),is(add),is(f2));
	writeln(is(int == uint),is(int : uint));
	writeln(is(typeof(f2) == function));

	auto arr21 = new int[4];
	assert(arr21 == [0,0,0,0]);
	assert(arr21.length == 4);
	writeln(typeid(typeof(a)));
	auto cfff = cast(float) a;
	writeln(typeid(typeof(a)),typeid(typeof(cfff)));
	writeln("add" in arr2);

}
相關文章
相關標籤/搜索