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、可选值不为空为前提的程序
以上是本次学习的内容