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
*/