參考自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); }