日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift不用声明类型那些事

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift不用声明类型那些事 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

這事本來如果王垠在專家角度來說會比較好看一點。不過e神既然提到了swift的這個特性和PHP等動態語言進行類比,那就隨便說一下。畢竟@我兩次了,但是我覺得篇幅太長一直沒回。

首先,我對swift的信息來源,并非來自于實踐,官方文檔好像要注冊apple帳號啥的才能下,隨便找到了這篇文檔,就以此為準進行說明。

然后,要把論點具體化,我不想爭論靜態類型語言好還是動態類型語言好,這樣話題范圍太廣。只是想說明下swfit的【不用在定義變量的時候聲明類型】,和php等動態語言,具體有什么不同。

swfit(以及c#)和java比,有一個地方讓人眼前一亮,就是可以在定義變量的時候不需要聲明類型

var a = "asdf" // 因為"asdf"是String類型,所以a是String類型,沒錯,就這么智能 var b : String // 也支持像Java一樣定義變量的時候,先不關聯值,只是指定類型 b = a print(b)

除此之外呢,swift和java在變量類型上的表現是差不多的,比如變量不能在它的作用域內變更類型

var a = "asdf" a = 1 // 編譯時就報錯

歸根結底,swift和java等靜態類型語言有相同的一個特性:大部分變量數據類型都能在編譯時確定。

對比一:

func a (b: String) -> String {var c = "Hello World " + breturn c }

在這里,我們可以第一眼看過去的時候,就知道參數b的類型是String。 那么PHP呢?

function a($b) {$c = "hello World $b";return c; }

這里光看函數定義,$b是什么我們是不知道的。

對比二:

func a (b: String) -> String {var c = "Hello World "if b == "a" {c = c + b} else {c = b + c}return c }

在swift里,c的類型固定是String,那在php里呢?

function a($b) {$c = "hello World";if ($b == "a") {$c = "hello World $b";} else {$c = strlen($b);}return c; }

在PHP里,不僅變量不需要指定類型,變量本身的類型大部分情況下不到真正拿具體數據跑起來是不清楚的。

對比三:

這里就懶得直接寫代碼了,就拿class(或者你喜歡array也行)來說,里面的大量的變量數據類型,在swift里是基本穩定的,但是在PHP的語法層面是不確定的。(語法層面不確定,就代表編譯器一開始是不確定數據類型的,編譯器如果要進行JIT性能優化,第一步先要猜測類型)

結論:

swift(以及c#)相比于java等,同樣都是靜態類型的語言,它所謂的不用聲明類型只是定義變量的時候,語法規定可以直接從它的初始值推倒出它的類型,避免編碼上的啰嗦。

只是語法上的一個特性而已,它是靜態類型的本質是不變的。和PHP等動態類型語言,完全不是一回事。

轉載于:https://my.oschina.net/visualgui823/blog/829824

總結

以上是生活随笔為你收集整理的swift不用声明类型那些事的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。