2013-12-15 62 views
1

Lua初學者在這裏,我正在看lua。 我的問題是:因爲Lua中的一個對象只是一個表,所以在運行時可以添加新的字段 。如果我在代碼中有拼寫錯誤,而不是更改字段,我創建了一個新字段,這不會帶來混亂嗎? ;) 我只能在運行時找出錯誤,如果我甚至在程序中的那一點。 (當然,表格概念還有其他好處,如元編程沒有反射,但我的問題是關於「安全」或可預測性。)面向對象的Lua有多安全?

這是正確的結論嗎?

回答

4

是的,這是正確的。 使用動態類型語言時,您需要大量的單元測試,以確保覆蓋所有可能的場景,並防止您所描述的那種混亂。

如果你想保護自己,我建議你看一下靜態類型語言,比如java,c#或者scala,然後讓編譯器爲你做類型檢查。

這就是爲什麼Twitter從Ruby轉移到Scala - 隨着項目的發展,它逐漸難以跟蹤只能在運行時使用動態類型化語言驗證的錯誤 - 但可以在編譯時通過驗證一個靜態語言編譯器。


動態類型語言是基於duck typing

如果它走起來像鴨子,並且叫聲也像鴨子,那麼它就是鴨子

我喜歡this version

如果它像鴨子一樣走路,像鴨子一樣嘎嘎叫,它可能會是thro運行時出現異常。

2

Lua爲您提供了與其他動態編程語言一樣具有至少與使用烘焙對象模型一樣安全的機制的機制。例如參見here

錯誤仍然會在運行時發生,但是,所以您需要一個體面的覆蓋測試套件。

有項目爲Lua添加靜態類型。創建metalua的Fabien Fleutot在最新的Lua Workshop上介紹了他。請參閱: