動態型別如何實現在執行時變換變數的型別

時間 2021-06-02 01:04:23

1樓:babypapa

有別人已經回答的很不錯了,我只補充一點,你理解的乙個誤區是動態語言能夠更換型別,各種動態語言的toString之類的介面,其實是返回乙個新的變數,並不是改變乙個變數的型別。

2樓:

根據我的了解就是指標實現,但是對指標做了乙個小封裝,給它附加了乙個型別的資訊。

通過這個型別資訊就能在執行的時候檢查它能不能用於加法(是不是數字)、能不能呼叫(是不是函式)。

在這個實現上和物件導向很相似,任何乙個子類的物件都可以賦值給父類。你可以假想動態型別的每一種型別之上有乙個公共父類。這和我前面的描述不衝突,物件導向裡每個物件一般都會附加型別資訊。

3樓:zkkp

根據我遇到的資訊,應該是兩種情況可能都存在,甚至同時出現在同一種語言:

1,對於布林型、整數型之類的簡單資料型別,直譯器原始碼中使用union來實現,通過某個標記字段指定uion負載的實際解釋型別,此時變數占用的空間大小為幾種簡單資料型別的最大大小,空間在區域性(呼叫棧)分配。

2,對於複雜資料型別,特別是內建gc的語言,一般應該就直接是動態分配的記憶體了,此時變數僅僅只是乙個指標(引用、控制代碼),由1中提到的標記字段指定當前是乙個指標。

C 模版類如何動態獲取型別?

yc znone 類D不需要是模板 classA class Dtemplate T D A object void T function object object function Function function void go class Avoid setD constD d void ...

如何系統的學習動態語言的型別推導,型別系統等知識?

一朵雲 首先,入門書籍 Typing system for programming language 如果這本你能耐著性子看完的話 再說其他的 冒泡 GitHub larva lang larva lang The larva programming Language 熊英飛 彭飛 已經很詳細的介紹...

axure動態面板這個功能如何實現,謝謝!!!?

產品經理避雷針 看了一下其他幾個答案,都不對。如果照著做肯定是實現不了的。這個效果是axure動效中很常見的,也很容易做錯的乙個互動。因為大部分的思路是直接用onmouseover和onmouseout來實現,這樣的話,下面的彈出部分肯定點不到了。因為滑鼠一離開上面的標籤,下面的動態面板就消失了。這...