swift学习随笔 Day3
2017-03-02 本文已影响31人
RadioHeadache
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)"//没有格式
//输出为 "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
*/