3 回答

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