swift學習隨筆 Day3

switch語句

/*
 1. 值可以是任何類型
 2. 作用域僅在case內部
 3. 不需要break
 */

let name = "老王"

switch name {
case "老王":
    let age = 80
    print("hi")

case "老李": break

//case里面沒有代碼的時候,需要用需要有break
    
default:
    print("other")
}

字符串

與OC對比

OC里面string是NSString,繼承自NSObject,是對象。而swift中的String是結構體。

支持遍歷

var str: String = "你好世界"

for  c in str.characters {
    print(c)
}

//consle輸出的結果為
/*
你
好
世
界
*/

NSString不支持遍歷

字符串的拼接

//字符串的拼接
let name = "老王"
let age = 80
let title = "小黑"

print(name + String(age) + title)
print("\(name)\(age)\(title)")

字符串的格式

swift里沒有類似oc的stringWithFormat,但是有其他替代的語法。

let h = 9
let m = 5
let s = 8

let timeStr = "\(h):\(m):\(s)"http://沒有格式
//輸出為 "9:5:8"

let timeStrWithFormat = String(format: "%02d:%02d:%02d", arguments: [h, m, s])//有格式
//輸出為 "09:05:08"

Range的變化

在swift中,Range的變化很大,如果要用OC中的subStringWithRange(NSMakeRange(range, NSRange),取出string中的某些字,要把String改成NSString

(str as NSString).substring(with: NSMakeRange(2, 2))
//轉換成NSString再使用NSMakeRange方法

str.substring(with: Range<String.Index>)

常量和變量

開發的時候,首選let,不得不修改的時候才使用var

循環

舊的寫法

這種寫法在最新版本的額xcode里面會報錯,并被fix成下面提到的開區間的寫法

for var i = 0; i < 10; i++ {
    print(i)
} 

開區間

//從0到9
for i in 0 ..< 10 {
    print(i)
}

/*
    輸出結果為:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
*/

閉區間

//從0到10
for i in 0...10 {
    print(i)
}

/*
    輸出結果為:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
*/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容