D語言中的屬性(Properties)

屬性(Properties)

每種類型和表達式都有可以查詢的屬性:

		
	.		
	().	
	(3).	
	2.		
	.		
	

整數數據型別的屬性

	.init		初始值 (0)
	.sizeof		以字節爲單位的大小(等價於 C 的 sizeof(type))
	.alignof		對齊大小
	.max		最大值
	.min		最小值
	

浮點型別的屬性

	.init		初始值 (NaN)
	.sizeof		以字節爲單位的大小(等價於 C 的 sizeof(type))
	.alignof		對齊大小
	.infinity		無窮
	.nan		NaN 值
	.dig		換算爲十進制表示後的精度
	.epsilon		最小遞增值
	.mant_dig		尾數的位數(bit)
	.max_10_exp	以 10 爲底數的最大階碼
	.max_exp		以 2 爲底數的最大階碼
	.min_10_exp	以 10 爲底數的最小階碼
	.min_exp		以 2 爲底數的最小階碼
	.max		可表示的最大值(除了無窮)
	.min		可表示的最小值(除了 0 )
	

.init 屬性

.init 產生一個常量表達式,其值爲默認初始值。如果應用到某個類型,其值爲該類型的默認初始值。如果應用到某個變量或域,其值爲這個變量或域的默認初始值。例如:

	 a;
	 b = 1;
	  t = 2;
	t c;
	t d = (t)3;

	.		
	a.		
	b.		
	t.		
	c.		
	d.		

	 Foo
	{
	     a;
	     b = 7;
	}
 
	Foo.a.	
	Foo.b.	
	

類和結構的屬性

屬性是成員函數,但在語法上被看作是域。屬性可讀可寫。通過調用一個無參數的方法可以讀取屬性。通過調用一個帶有一個參數的方法可以對屬性賦值,參數代表屬性的新值。

簡單的屬性可以是:

	 Foo
	{
	     data() {  m_data; }			
	     data( value) {  m_data = value; } 	

	  :
	     m_data;
	}
	

用法:

	 test()
	{
	    Foo f;

	    f.data = 3;		
	     f.data + 3;	
	}
	

如果沒有讀方法就意味着屬性是隻讀的。可以有多個寫方法共存,用正常的重載規則來決定採用哪個函數。

在其他方面,這些方法同其他的方法都是相同的。它們可以是靜態的、擁有不同的鏈接方式、被重載、被取地址等等。

注意:目前屬性不能作爲 op=、++ 或者 -- 運算符的左值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章