Swift语言学习---------高级
2015-11-03 17:03
120 查看
一.结构体.
示例代码:
二.类及继承
示例代码:
三.协议及扩展.
示例代码:
四.闭包
闭包类似于于block函数 ]
注意:闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,
闭包函数体即将开始。
示例代码:
示例代码:
//*****************结构体(Struct)*************** //1.声明一个结构体 struct rect{ //声明结构体变量成员的属性(存储属性) var x:Float var y:Float var With:Float var Height:Float //声明结构体属性 //注意:需要使用Static关键字修饰 static var description:String? //计算属性(本身不存值,专门用于计算其他属性的值) var centerX :Float{ //setter方法 set{ x = newValue } //getter方法 get{ return x + With/2 } } var centerY :Float{ get{ return y; } } //声明方法 //声明一个结构体对象(结构体变量)方法[类似于类中的实例(对象)方法] func info(){ print("x:\(x) y:\(y) width:\(With) height:\(Height)") } //声明结构体方法[类似于类中的类的方法] static func info1(){ print("这是一个结构体方法") } } //1.根据结构体类型创建结构体对象(结构体变量) var rect1 = rect(x: 0, y: 0, With: 100, Height: 100) //注意:如果结构体对象是常量内部的属性是不允许修改的 //访问结构体对象的属性 rect1.x = 20 print(rect1.x) //访问结构体属相 rect.description = "我是结构体属性" print(rect.description!) //访问结构体对象的计算属性 rect1.centerX = 100 //在调用center中的setter方法 let value = rect1.centerX //在使用centerx的getter方法 //使用结构体对象方法 rect1.info() //使用结构体方法 rect.info1()
二.类及继承
示例代码:
//类***************************************** //class Person{ // var name:String? // var age:Int? // //构造方法 // init(name:String, age:Int){ // self.name = name // self.age = age // } //} // ////创建一个Person对象 //var p1:Person = Person(name: "张三 ", age: 20) // ////访问类中的属性 //print(p1.name!) //print(p1.age!) class Person { //声明属性 var name:String? var age:Int? //声明类属性 static var introduce:String! //(存储属性) //声明计算属性(类,结构体,枚举) var number:Int{ get{ return self.age! } set(value){ //这种写法表示在调用number的set方法时传过来的参数赋值给value age = value //注意切记setter/getter方法中不能使用self.的形式 } } //声明类方法 static修饰时,不能被子类重写 class修饰的可以 static func sayHi(){ print(introduce) //注意在类方法中不能使用对系那个属性,只能使用类属性 } class func sayHi2(){ } //声明构造方法 init(name:String,age:Int){ self.name = name self.age = age } init(name:String){ self.name = name } //声明一个对象方法 func sayHello(){ print("我是对象方法") } } //继承 class Student:Person { //重写父类的类方法 override class func sayHi2(){ print("我是Student类,重写了父类的类方法") } } // let person = Person (name: "李四", age: 25) person.sayHello() //使用对象方法 Person.sayHi2() //使用的是类方法 Student.sayHi2() //使用的Student中重写父类的那个方法 //创建Student对象 let student:Student = Student(name: "小碗", age: 21) //值类型与引用类型*************************************** //值类型变量 //struct animal { // // var name:String? // var age:Int? // // //} //var dog = animal(name: "小明", age: 2) //var dog1 = dog //此时dog1是从dog拷贝过来的值,是一份新值 //dog.name = "小花" //print("\(dog.name!),\(dog1.name!)") //引用类型变量 class animal { var name:String? var age:Int? init(name:String , age:Int){ self.name = name self.age = age } } var dog = animal(name: "小黄", age: 3) var dog1 = dog //此时dog1是从dog拷贝过来的值,是一份新值 dog.name = "小花" print("\(dog.name!),\(dog1.name!)")
三.协议及扩展.
示例代码:
//协议(protocol)*************************************** //当协议前有可选方法时,该协议前要用关键字@objec修饰,可选实现方法用optional修饰 @objc protocol MerrayDelegate{ func cook() //做饭 func wach() //洗衣服 optional func hitDoudou() //打豆豆 } protocol DividDelegate{ func lookAfterChild() } class Man: Person,MerrayDelegate,DividDelegate { @objc func cook() { print("还好学了几年手艺") } @objc func wach() { print("手洗") } func lookAfterChild() { print("看小孩") } } //扩展 (实现代码的分离,不过与臃肿) extension Man{ @objc func hitDoudou() { print("打豆豆") } } // let man:Man = Man(name: "黄海波", age: 40) man.cook() man.hitDoudou() //扩展(extension)************************************************** //1.扩展一个类遵循的协议的方法的实现 //扩展 (实现代码的分离,不过与臃肿) //extension Man{ // @objc func hitDoudou() { // print("打豆豆") // } // //} //2.扩展一个类的方法(类似于oc中的category类目) extension Man { //扩展一个对象方法 func sing(){ print("哈哈") } //扩展一个类方法 class func eat() { print("吃饭") } } man.sing() Man.eat()
四.闭包
闭包类似于于block函数 ]
注意:闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,
闭包函数体即将开始。
示例代码:
//闭包 相当于block函数 //求两个整型数中的最大值 //第一种方式实现闭包 var maxResult:((a:Int, b:Int) ->Int) = { //这个函数的类型是(a:Int, b:Int) ->Int (a:Int,b:Int)->Int in return a > b ? a : b } print(maxResult(a: 3, b: 5)) //第二种方式 maxResult = { a,b in return a > b ? a : b } //第三种方式 maxResult = { a,b in a > b ? a : b } //第四种 maxResult = { $0 > $1 ? $0:$1 } //第五种 maxResult = { (a,b) -> Int in a > b ? a : b } print(maxResult(a: 3, b: 5))
相关文章推荐
- 详解Swift编程中的for循环的编写方法
- iOS swift 语句只能写在函数体内
- 深入理解Swift语言中的闭包机制
- Swift语言中的函数学习教程
- Swift 基础入门 协议/闭包
- swift 快速奔跑的兔几 本节的内容是:闭包儿和操作队列
- Swift编程中数组的使用方法指南
- Swift语言中字符串相关的基本概念解析
- Swift 基础知识Part1
- Swift 基础知识Part2
- iOS swift 通过Url打开自定义的app
- 详解Swift编程中的常量和变量
- Swift 入门基础(结构体/类)
- OC + Swift 混编(二)
- OC + Swift 混编 (一)
- ios swift UIwebView
- swift控制语句,for,while,repeat-while,if,switch
- Swift高级运算符(Advanced Operators)
- swift 快速奔跑的兔几 本节的内容是:animations
- Swift 学习笔记 - 闭包