元组:tuple
Swift元组和oc的数组和字典很相像,但又有很大差别;
1、元组可以放不同数据类型的元素
2、元组的取值方式:
《1》 可以使用下标取值0
《2》 通过key取值 (必须定义)
公式:1、(1,"mm",对象)
2、("key":值,"key":值)
取值的时候用 . 取值
另外,Swift和oc的不同
swift:
数组 字典:[]
元组:()
oc:
数组:[]
字典:{}
例子:
let tuple1 = (1,"mm")
print(tuple1.0)
let tuple2 = (age:25,name:"小明")
print(tuple2.age)
let person = (height:175,age:22,sex:"男",name:"小刚",weight:130)
print(person.name)
闭包:封闭的代码块 也可以把函数 当成一个闭包
一:基本使用公式
1、完整公式
let 闭包名 = {(参数列表) -> 返回值类型 in
具体执行的代码
如果有返回值 return 返回值
}
例:使用闭包 计算三个数的和
let sum = {(a:Int,b:Int,c:Int)-> Int in
return a+b+c
}
print(sum(1,2,2))
2------无返回值 不带参
完整版:{()->Void in 实现代码}
简化版:{}
let block = {
print(".....")
}
block()
3------有参数 无返回值 简化版
{(参数列表) in 实现代码}
let block = {(age:Int) in
print("ggggggg")
}
block(22)
4、调用:闭包名()
如:block()
二:当做参数使用公式
1、声明包含闭包的方法
func 方法名(闭包名:(参数列表)->返回值类型){闭包名(实参列表)}
2、调用包含闭包的方法
方法名{(参数列表) in 实现代码}
--****-----使用block当做参数的使用顺序:执行顺序有点迷糊,需要好好理解
要从两个方面理解它:书写顺序和调用顺序
// 3、block实现 方法调用的部分 :书写的顺序
// 1)、调用方法:调用顺序
loadData{(message) in
// 3)回来调用block实现部分:调用顺序
print(message)
}
// 1、在方法中 填写 把block声明部分 当做参数:书写顺序
func loadData(response:(message:NSString)->Void){
// 2)、进入方法体 调用block:调用顺序
// _省略变量
// 2、 block调用:书写顺序
response(message:"下载完毕")
}
三:typealias 替代
typealias 要替代成的名字 = 要替代的数据类型
如:type alias Height = Float
先设置一个typealias
typealias Block = ()->Void
声明
func mmmm(message:Block){
print("666666")
}
实现
mmmm{
}
------结构体---------
增加方法 (可以调用方法 也可以添加方法)
增加实例化方法 (init)
调用:
使用实例化方法 创建结构体对象
1、改变
《1》自动生成实例化方法
《2》可以在结构体中 创建方法
《3》可以在结构体中 调用方法
2、公式
声明:
struct 结构体名{
let(var) 变量?
func(){}
}
如果改变结构体中的 值 需要在方法前面加上mutabing
使用:
let(var) 变量名 = 结构体名.init()
let(var) 变量名 = 结构体名.init(实参)
3、与类的区别
(1)结构体偏向 处理数据
(2)类 偏向于 处理逻辑、关系
(3)类中的对象 有对象的特征:封装、继承、多态
(4)引用计数的处理不同 结构体有专门处理变量的引用计数方法
struct Hero {
var name:NSString?
var blood:Int?
var lv:Int?
mutating func upBlood(){
blood!+=100
add()
}
}
func add(){
print("+++")
}
struct Monster {
var name:NSString?
var blood:Int?
mutating func des(){
print(name,blood)
}
func bbb(){
print("")
}
创建 结构体对象
let wa = Monster.init(name:"kkkk",blood:200)
print(wa.name,wa.blood)
......................