3
子類型和包含有什麼區別?包含意味着隱含的強制嗎?子類型和包含有什麼區別?
子類型和包含有什麼區別?包含意味着隱含的強制嗎?子類型和包含有什麼區別?
是的,你大部分是正確的。
子類型是兩個類型的關係。它本身並沒有說明這種關係如何實際應用於表達式的輸入。
包含通常意味着存在表達式的鍵入規則,允許隱式應用子類型到它們的類型。有些子類型的語言沒有包含規則,必須使用特殊的類型註釋(例如OCaml)顯式調用。
子類型是否是「強制性」也有些獨立的方面。強制分類改變其應用的價值。例如,在浮點語言中,子類型可能是強制性的,因爲整數和浮點數是不同的域。對象的典型OO風格分類通常不具有強制性。然而,這是一個有些模糊的概念,因爲它通常取決於語義模型的選擇,並且可能不一定會產生可觀察到的差異(除非語言允許使用向下轉換來反轉subtying)。實際上,它指的是實現技術而不是語義。