天天看點

swift是強類型語言

swift是強類型語言

  1. 所有的變量必須先聲明,後使用;
  2. 指定類型的變量隻能接收類型與之比對的值。

強類型:變量的類型明确,變量的指派必須符合類型限制;變量的類型轉化必須顯式進行。

強類型:類型規則的制定與檢查;

動态類型:變量的具體類型由值類型确定,它的行為也由值類型确定;

動态類型、靜态類型:強調類型的綁定;

相對于oc的kindof,允許類型的繼承轉換;

所有的類型轉化都必須顯式強制進行

Swift是強類型語言,但也允許開發者通過is、as?和as!這三種操作來對類型進行判斷和強制轉換。其中is用作類型判斷,而as?和as!則分别是類型轉換的可選形式和強制形式。在這裡強調一下,swift中比較常用的向下轉換(downcast)是沒有as操作符的。

OC語言是一門強類型的語言。

強類型包含兩方面的含義:

強類型的語言可以在編譯過程中發現源代碼的錯誤,進而保證程式更加健壯。

“再來看看靜态類型語言的好處:由于在運作之前進行了類型檢查,一方面代碼的可靠性增強,符合‘發現錯誤要盡早’的原則;另一方面編譯器有可能藉此優化機器代碼以提高運作效率,同時相比前者節省了運作期的耗費在類型檢查上的時間和空間。此外,變量類型的聲明彰顯了程式設計者的意圖,有輔助文檔的功效。”冒号有條有理地解釋着,“兩種類型的體制可以用兩種法律原則來類比:靜态類型檢查類似‘疑罪從有’的有罪推定制——在被證明合法之前是非法的,動态類型檢查類似‘疑罪從無’的無罪推定制——在被證明非法之前是合法的。至于如何取舍,套用一句話:‘Static Typing Where Possible, Dynamic Typing When Needed’。不妨了解為:盡可能守規則,必要時求變通。”

與此相對地,強類型語言(strongly-typed language)着意貫徹類型控制,為保障資料的完整性和代碼的安全有效性,一般不允許隐性類型轉換[6]。如果一定需要類型轉換,必須是顯性轉換,一般通過我們熟知的鑄型(cast)來完成。”

------------------越是喧嚣的世界,越需要甯靜的思考------------------

合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。

積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千裡;不積小流,無以成江海。骐骥一躍,不能十步;驽馬十駕,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鳝之穴無可寄托者,用心躁也。