“類型安全”是什么意思?
3 回答

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
類型安全不應與靜態/動態類型或強/弱類型混淆。
類型安全的語言是一種只能對數據執行的操作是數據類型所允許的操作。也就是說,如果您的數據屬于類型X
并且X
不支持操作y
,那么該語言將不允許您執行y(X)
。
這個定義并不設置規則時,這個被選中。它可以在編譯時(靜態類型)或在運行時(動態類型),通常通過異常。兩者可能有點:某些靜態類型化語言允許您將數據從一種類型轉換為另一種類型,并且必須在運行時檢查轉換的有效性(假設您嘗試Object
將a轉換Consumer
為a-編譯器沒有知道是否可以接受的方式)。
類型安全性也不一定意味著強類型化-眾所周知,某些語言的弱類型性很強,但仍然可以說是類型安全的。以Javascript為例:它的類型系統雖然很弱,但仍然嚴格定義。它允許在正確定義的規則內自動轉換數據(例如,將字符串轉換為整數)。據我所知,沒有一種情況會導致Javascript程序以未定義的方式運行,并且如果您足夠聰明(我不是),您應該能夠預測閱讀Javascript代碼時會發生什么。
類型不安全的編程語言的一個示例是C:根據規范,在數組范圍之外讀取/寫入數組值具有未定義的行為。無法預測會發生什么。C是具有類型系統但不是類型安全的語言。
添加回答
舉報
0/150
提交
取消