20用d程式設計結構

2021-10-03 09:11:43 字數 1478 閱讀 3537

結構是值型別,直接複製.可有預設值.如果未初化,則成員自動用該型別的預設值.

struct timeofday 

//定義

auto periodstart =

timeofday(8

,30);

auto periodduration =

timeofday(1

,15);

immutable periodstart =

timeofday(8

,30);

immutable periodduration =

timeofday(1

,15);

//不變,動,枚,都具有自動推導的能力.

import std.math;

struct test

//可一次初化0~3個,因為每種型別都預設初化.有預設初化值

struct test

//還可以這樣,

可以這樣:

timeofday periodstart =

;//比c++多了乙個`=`號,這是類`c`風格.

也可以這樣:

timeofday t =

;auto yourlunchtime =

timeofday(12

,0);

auto mylunchtime = yourlunchtime;

//按值複製

小心,按值複製過程中,有些成員是鑰匙.複製過去的仍然是鑰匙,而不是實體.如

struct student 

auto student1 =

student(1

,[70,

90,85]

);auto student2 = student1;

//複製

student2.number =2;

//第乙個是實體

student1.grades[0]

+=5;

//實體在修改

writeln

(student2.grades[0]

);//可見,在鑰匙眼裡,已經變了.要小心.

auto student2 =

student(2

, student1.grades.dup)

;//這樣,複製了個新實體.

student1.grades[0]

+=5;

writeln

(student2.grades[0]

);

靜態成員可在static this()中初化,在static ~this()中析構

import std.file;

struct point

}static

~this()

//在此析構

}

05用d程式設計切片

切片,動態陣列的別名.起.尾 是這樣的 即左包右不包 切片不是實體,就像鑰匙一樣.如果切片修改實體,則實體也跟著變了.a.a 大小為0,a.表示陣列長度,等價於陣列.長度.dup複製實體.如下 import std.stdio void main 賦值 int 3 a 1 1,1 int 3 b 2...

06用d程式設計 串

最簡單定義 char是串,字元陣列 d有三種陣列型別.import std.stdio void main 用 c z 可以看到結果,否則 回車 沒用.readf不適合讀串,讀符就差不多了.readln適合讀串,就不需要 s及 運算子了.如下 import std.stdio void main 可...

08用d程式設計域

不能在內部域中定義與外部域中相同的名字.有的在域的最前定義變數 一般在使用前定義變數,而不是在之後.找不到,也不規範 最好在剛要使用前定義,在速度,不犯錯,可讀,維護上都不錯.import std.stdio void main i 10 i 在 中宣告多種型別變數 d官方程式設計風格 三元符.三個...