Swift-簡單值

一直都覺得 Swift 有很多地方都沒有 Objective-C 好(此時此刻仍是這麼覺得),所以打心眼裏不想學 Swift。但是師父已經開始逐步把我們公司的項目轉成 Swift 了...於是我也決定(其實是爲形勢所迫),從今天起利用閒暇時間自學 Swift。如果有一天 Swift 真的完全替代了 OC,我會很難過。。。


使用 let 聲明常量,var 聲明變量。比如聲明一個 Int 類型的變量 a,初始值爲 3:

var a : Int = 3

(每句結束不用寫分號,這勉強算優點之一吧)


在 Swift 中,編譯器會自動推斷類型。比如:

var a = 3


雖然我們沒有聲明 a 的類型,但是 a = 3,所以編譯器會推斷出 a 是整型。但是下面這樣是不行的:


如果像上面這樣,既沒有賦初值,也沒有聲明類型,即使之後有可以推斷類型的地方,還是會報錯。


注意:一個常量或者變量的類型是不能改變的。比如下面這樣會報錯:


編譯器已經推斷出 a 是整型的,但是不會再次推斷然後把 a 變成 Float 類型的哦~


注意:值永遠不會被隱式轉換爲其它類型。如果你需要把一個值轉換成其它類型,請顯式轉換
什麼是隱式轉換?比如這樣:


根據上面所說的,編譯器會自動推斷出 str1 是字符串,str2 是整數。現在我們想讓 str3 顯示 "The width is 100"。如果值可以被隱式轉換的話,那麼在計算 str1 + str2 的時候,str2 就會被自動轉換成字符串。顯然在此處不可以,編譯器報錯了。所以我們需要顯式轉換。比如:

let str1 = "The width is "
let str2 = 100
let str3 = str1 + String(str2)

String(str2) 就是顯式轉換,我們把整型的 str2 轉換成了字符串類型。現在就可以用 ' + ' 來連接兩個字符串了。如果用 print(str3) 來打印 str3,輸出結果是 "The width is 100"。


除此之外還有另一種方法可以把一個數轉化爲字符串:把值寫到括號中,並在括號之前寫一個反斜槓。看代碼:

let str1 = "The width is "
let str2 = 100
//let str3 = str1 + String(str2)
let str3 = str1 + "\(str2)"
注意:此時需要加引號,對比一下,String(str2) 轉換以後是不需要加引號的。

let name = 3.4
var greeting = "Hello \(name)! How are you?"
greeting = "Hello " + String(name) + "! How are you?"

在上面這種情況下,顯然 \ ( ) 這種方式更簡單一些,因爲後者要多寫幾個引號~


另外我發現了一句挺有意思的代碼:

var d = ()
我猜測它可能和下面這個一樣:

var d = Void()


但是在文檔中,比如 String 有 () 這種構造方法:


我們可以它用來初始化一個空字符串:

var str = String()

然而 Void 卻沒有:


那麼爲什麼也能用 var d = () 或者 var d = Void() 呢???這個問題我還不知道答案,留待以後解決~


如果有一天 Swift 真的完全替代了 OC,我會很難過。。。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章