D中的in
和out
關鍵字究竟意味着什麼?從環視功能使用這些參數我明白,in
關鍵字用於功能輸入和out
關鍵字用於參數基本上通過引用傳遞。D中的'in'和'out'關鍵字是什麼意思?
這種理解是否正確,他們實際上允許或禁止程序員做什麼?
D中的in
和out
關鍵字究竟意味着什麼?從環視功能使用這些參數我明白,in
關鍵字用於功能輸入和out
關鍵字用於參數基本上通過引用傳遞。D中的'in'和'out'關鍵字是什麼意思?
這種理解是否正確,他們實際上允許或禁止程序員做什麼?
是的,你基本上得到它。 in
展開爲const scope
,這意味着您不能更改變量(或其指向的任何內容),也不應該在任何地方保留對其的引用(儘管在大多數情況下實際上並未實現scope
)。基本上,in
是看,不要碰。
out
表示給定的變量接收到一個值。它與ref
非常相似 - 在函數內部對其進行的更改也在外部顯示 - 具有很小的差別,即out變量被初始化爲它們的正常初始值,清除它們在函數被調用之前具有的值。
基本上,void foo(out int a) {}
== void foo(ref int a) { a = 0; /* inserted automatically */ }
那麼'void func(in int value)'如何與'void func(const int value)'不同? – Verax
它沒有。由於'int'是一個值類型,所以'範圍'(不允許引用轉義)的(假設,再次,沒有真正實現)限制不適用。 –
只是一個相關的說明。這些關鍵字也用於按合同設計功能。 – simendsjo