隱藏的數據類型-引用

彙編語言中,引用就是內存的地址,是一個數字類型。程序員

C 語言中,引用是經過指針實現的,而其類型是和其指向的類型有關的一種類型。併發

在函數式語言中,沒有顯式的引用,函數的參數默認是傳遞值,沒法傳遞引用,這在併發類語言中尤爲明確。而這樣設計的初衷是爲了防止程序員不當心修改了共享的變量,而形成併發行爲發生不可預料的後果。函數

我認爲,引用應看成爲一種獨立的類型,分離出來。即便是支持併發的語言,也不要強制禁止傳遞引用,禁止對值的修改,由於這是程序員的權利。設計

ref = *value
  ref_value = &ref

爲了不影響編譯器對內存的調度,引用不能當成一種數字類型,也不能和引用所指向的類型相關。 type(ref) == 'ref'指針

引用能夠複製,能夠做爲參數傳遞,在對引用計算的時候,會自動解引用,code

other_ref = ref
  accept_ref_function(ref_var)
  ref_var.type() // equal &ref_var.type();

而函數的參數傳遞,傳遞的是值,而不是引用。若是想傳遞引用,就顯式的定義:內存

var_ref = *var
  accept_ref_func(var_ref)

語言設計應當儘量的把潛規則顯式的表達出來。編譯器

相關文章
相關標籤/搜索