2014-02-21 50 views
4

D中的inout關鍵字究竟意味着什麼?從環視功能使用這些參數我明白,in關鍵字用於功能輸入和out關鍵字用於參數基本上通過引用傳遞。D中的'in'和'out'關鍵字是什麼意思?

這種理解是否正確,他們實際上允許或禁止程序員做什麼?

+1

只是一個相關的說明。這些關鍵字也用於按合同設計功能。 – simendsjo

回答

8

是的,你基本上得到它。 in展開爲const scope,這意味着您不能更改變量(或其指向的任何內容),也不應該在任何地方保留對其的引用(儘管在大多數情況下實際上並未實現scope)。基本上,in是看,不要碰。

out表示給定的變量接收到一個值。它與ref非常相似 - 在函數內部對其進行的更改也在外部顯示 - 具有很小的差別,即out變量被初始化爲它們的正常初始值,清除它們在函數被調用之前具有的值。

基本上,void foo(out int a) {} == void foo(ref int a) { a = 0; /* inserted automatically */ }

+1

那麼'void func(in int value)'如何與'void func(const int value)'不同? – Verax

+1

它沒有。由於'int'是一個值類型,所以'範圍'(不允許引用轉義)的(假設,再次,沒有真正實現)限制不適用。 –

相關問題