1、变量和常量的声明

常量:

let maxNumber = 10

变量 

var currentNumber = 10.0 , currentName = "Robot"



2、类型标明

格式是在声明的变量或者常量后面

name:  type

常量是int类型

let maxNumber:Int = 10

变量是Double类型

var currentNumber:Double = 10.0



3、命名规范

字母数字下划线,首字母不能为数字,不能包含数学符号,箭头 非法的unicode码还有连线和制表符

使用保留字需要 使用反引号 (`)强烈不推荐使用保留字,因为选择很多

常量一但复制,就不能在修改


4、输出println

看一个栗子

let myName = "Robot"
println("hello, my name is \(myName)")


5、注释和分号

格式如下

// 单行注释

/*

多行注释

*/

一行里放两段代码会使用;

其他不需要分号


6、整数和浮点数

Int UInt Double Float


7、类型安全和类型推测

一个String类型的变量赋Int值编译时报错

let pi = 3 + 0.1415926

pi 会被推测为Double型


8、数值型字面量

十进制没前缀

二进制前缀:0b

八进制前缀:0o

十六进制前缀:0x

指数表示

十进制e  基数和10的n次幂的乘积

1.25e2 表示 1.25 * 10^2 = 125.0

十六进制p 基数和2的n次幂的乘积

0xFp2 表示 15 * 2^2 = 60


9、类型转换

UInt8 one = 1
UInt16 two = 2000
Double three = 3.25
let sum = UInt16(one) + two
let sum2 = Double(one) + three
let pi = Int(3.141592653)



10、类型别名typealias

typealias AudioSample = UInt
var maxUInt = AudioSample.max



11、Boolen值

var isTree = true
var isGreenColor = false
注:
let i = 1
if i{
//编译报错
}
if i==1{
//成功
}


12、元组

元组是 一种或多种数据类型组成的一个新的数据类型

e.g(Int, String)

let http404Error = (404, "Not Found")



拆分元组数据

let (statusCode, statusMessage) = http404Error



选择性拆分元组数据

let(statusCode, _) = http404Error



通过下标访问元组中的单个元素

http404Error.0 //404

http404Error.1 //"Not Found"

元组适用于临时数据


13、可选

optionals 处理值缺失的情况

举个例子

let numberString= "123"
let number = numberString.toInt()

这里的number就是可选值要么是Int型,要么是空值

实践发现下面这行代码是错误的

var num?:Int
应该为
var num :int?

强制解析:

确定可选值有值的情况下用"!" 来获取值

let testNumber = num!

可选绑定:

对可选值进行判断,有值则赋给一个变量或者常量

例如:

if let actualNumber = possibleNumber.toInt() {
println("\(possibleNumber) can be converted to \(actualNumber) ")
}else{
println("\(possibleNumber) can't be converted to an Integer")
}

可以给可选值赋nil但非可选值是不可以赋nil的

var serveResponseCode :Int ? = 404
serveResponseCode = nil
var clientResponseCode :int?

可选值在声明时候没有赋值,系统会自动赋nil

swift 中的nil 和objective-c 中的nil 不同 前者指的是一个代表值缺失的确定的值,后者指的是指向不存在对象的指针

隐式解析可选:

当可选值被第一次赋值之后可以确定一直有值,那么隐式解析将非常有用

可选String与隐式解析可选String的区别是

可选需要用"!"来获取可选值

隐式解析可选不需要"!"

例如:

let possibleString:String ?= "An optional String"
println(possibleString!)
let assumeString:String != "An implicitly unwrapped optional string"
println(assumeString)



14断言assert

let age = -3
assert(age>0, "a person's age can't be less than 0")

使用的场景:

1、索引的判断

2、函数传入的值

3、可选值不为空为前提的程序


以上是本次学习的内容