D語言 DMD 0 166發布

2021-08-29 04:23:14 字數 843 閱讀 7613

這一版本在強大的民意壓力之下取消了上一版的「隱式轉換表示式為委託」這一特性,取而代之的是乙個lazy關鍵字。

取消的理由是這個轉換太隱晦了,最好是顯式地標示出這種轉換,所以引入乙個lazy關鍵字。d語言還在發展中,很多特性都在嘗試,這種修改也不是第一次了。

首先看看這個lazy。

void

log(

char

delegate

() msg)

log(

"hello, "~

"li jie! \n"~

"welcome!");

log的引數被隱式轉化為乙個委託,這樣只有用到這個值的時候才真正求值。

由於這種隱式轉化很容易形成陷阱,所以這一版改為乙個lazy關鍵字,看起來要簡潔一些了:

void

log(lazy 

char

msg)

log(

"hello, "~

"li jie! \n"~

"welcome!");

log函式中使用msg這個變數就會呼叫那個隱式的委託,要注意的是每次取msg的值都會執行這個委託,所以我覺得這個陷阱更大了,當然它把陷阱丟給編寫**的人,而不是使用**的人,所以好壞還無從分辨。

下面這點**可以演示這個小陷阱:

void

foo(lazy 

inta)

intbar()

foo(bar());

看起來bar好像會執行一次,實際上這段**會列印出3行"call bar()",原來使用委託還可以看到乙個顯式的函式呼叫呢。

另乙個member templates特性未見到文件,猜想大概是支援成員函式模板吧。

D語言 DMD 0 168發布

新特性 1 給委託增加ptr屬性,指向委託所繫結的物件。這是乙個語法糖,dg.ptr被轉化為cast void dg,它只能作右值,所以除了能讀取它以外,在語法上禁止對它賦值。要想把委託繫結到不同的物件,你只能自己實現 class foovoid bar void main void ptr cas...

TypeScript 2 5 發布,增加語言級重構

在 typescript 2.5 版本中,microsoft 專注於提高開發人員的生產力,其範圍已經超出了 編輯器所提供的常見功能。u0026 xd u0026 xd u0026 xd typescript 是基於編輯經驗開發的一種語言,因此我們團隊在編輯器 型別檢查器以及支援編輯器 如 vs co...

TypeScript 2 5 發布,增加語言級重構

在 typescript 2.5 版本中,microsoft 專注於提高開發人員的生產力,其範圍已經超出了 編輯器所提供的常見功能。typescript 是基於編輯經驗開發的一種語言,因此我們團隊在編輯器 型別檢查器以及支援編輯器 如 vs code 的語言服務方面投入了精力。它不僅僅是 vs 和 ...