《浅入浅出Swift》var,let,data,typealias,Bool,Tuples,Optionals(?!),nil,Assertions

####var & let

1
2
3
4
5
6
7
8
9
10
11
12

//let声明常量 var声明变量
let myLet = 1
println("常量myLet = \(myLet)")
var myVar = 10
myVar = 1
println("变量myVar = \(myVar)")

//支持连续的变量声明
var myTestOne = 1,myTestTwo = 2,myTestThree = 3
var myIntVar:Int = 1
var myStringValue :String = "你好"

注释(/**/)&分号(;)

1
2
3
4
5
6
7
8
9

/*
/*
支持连续 /**/咯,亲,你懂的

*/
*/

//分号
println("分号测试1");println("分号测试2")

####data

1
2
3
4
5
6
7
8
9
10
11
12
13
14

//数据类型转换
let myPi = 3.1415
let myInt = 1
let myjia = myPi + Double(myInt)
println("数据类型转换 = \(myjia)")
let myUInt16Value:UInt16 = 2_000
let myUInt8Value:UInt8 = 1
let myjia2 = myUInt16Value + UInt16(myUInt8Value)
println("数据类型转换2 = \(myjia2)")
let myText = "The width is"
let myTextNum = 94
let myTextAddNum = myText + String(myTextNum)
println("数据类型转换2 = \(myTextAddNum)")

####typealias

1
2
3
4
5

//类型别名
typealias MyUInt = UInt
let myTestUInt :MyUInt = 2_000
let myTestUInt2 :UInt = 2_000

####Tuples

1
2
3
4
5
6
7
8
9
10
11
12
13

//元组
let http404Error = (404,"Not Found")
//组员1
println("\(http404Error.0)")
//组员2
println("\(http404Error.1)")

let newHttp404Error = (statusCode:404, description:"Not Found")
//新组员1
println("\(newHttp404Error.statusCode)")
//新组员2
println("\(newHttp404Error.description)")

####Bool

1
2

//不能用非0值表示true,而一定要用Bool值来判断

####Optionals(?&!) nil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

//可选项optional
let myNumber = "123"
myNumber.toInt()
let myNumber1 = "Hello kitty"
myNumber1.toInt()
//不能编译,crash!!! fatal error: Can't unwrap Optional.None
// println("myNumber1's value is \(myNumber1.toInt()!)")
//可以编译,no crash
println("myNumber's value is \(myNumber.toInt()!)")
//可这样使用
if let myActualNumber = myNumber1.toInt(){
println("myNumber1's value is \(myActualNumber)")
}else{
println("myNumber1 could not be converted to an integer")
}


var strValue : Optional<String> = "nicai"
var strValue1 :String? = "nicai1" //效果同上
if strValue {
NSLog("strValue 有值")
}else{
NSLog("strValue 无值")// strValue = nil
}
println("strValue = \(strValue)")
//Optional wrap后的值
if let str = strValue{
let hashValue = str.hashValue
println("hashValue = \(hashValue)")
}
//同上
// let hashValue = strValue?.hashValue
// println("hashValue \(hashValue)")


//!
var myLabelText : String! = "nihao"
//等同于
// var myLabelTextOne : ImplicitlyUnwrappedOptional<String> = "nihao"

####Assertions

1
2
3
4

//断言
let testAge = -3
assert(testAge<0,"age less than zero")//通过编译 满足条件不爆

Reference

坚持原创技术分享,您的支持将鼓励我继续创作!
0%