swift-结构体
2016-02-01 14:02
176 查看
import Foundation //定义一个结构体 //swift的结构体中可以 定义成员变量 和成员变量方法 //内部有构造函数 但是没有析构函数 //结构体类型 struct MyStudent { //在定义的时候可以初始化成员变量 var age:Int = 0 var height:Int = 0 //内部自动会实现一个无参的构造 和 带参数的构造 } //结构体中的成员变量 必须要初始化 //1.在定义成员变量的时候初始化 2.或者在构造函数中初始化 //创建一个结构体变量 var xiaohong:MyStudent = MyStudent()//里面会自动调用 内部的init()无参的构造 //获取成员变量的值 通过'.'获取 print("xiaohong_age = \(xiaohong.age) height = \(xiaohong.height)") //直接用点操作 //对成员变量赋值 xiaohong.age = 24 xiaohong.height = 170 print("xiaohong_age = \(xiaohong.age) height = \(xiaohong.height)") var xiaohuang:MyStudent = MyStudent(age: 25, height: 180) //会自动调用内部的带参数的构造 print("xiaohuang_age = \(xiaohuang.age) height = \(xiaohuang.height)") //构造函数:在创建变量空间的同时自动调用的函数 就是构造函数 //构造函数的功能:初始化 成员变量 //和c++的构造函数类似 和 OC的初始化函数init 类似 //2.下面我们自己实现构造函数 struct MyStu { var age:Int var height:Int //无参数的构造函数 构造函数前不需要加 func init() { print("无参数的构造函数init()") // age = 25 // height = 180 //建议用self.age self.age = 25 self.height = 180 } //带参数的构造函数 //有参数的构造函数调用的时候 会自动加标签 init(age:Int,height:Int) { //因为带参数的构造 的参数名 经常和成员变量同名 所以下面在赋值时建议使用self.age //在结构体内部操作成员变量一般都是使用self.xxx self.age = age self.height = height print("有参数的构造被调用") } //一个结构体中可以有多个 构造函数 /*参数名也可以起其他的名字 init(newAge:Int,newHeight:Int) { //因为带参数的构造 的参数名 经常和成员变量同名 所以下面在赋值时建议使用self.age //在结构体内部操作成员变量一般都是使用self.xxx self.age = newAge self.height = newHeight }*/ //可以定义其他方法 func sleep() { print("呼呼大睡") } func jump () { //self.age = 10 //在其他函数中默认是不能修改成员变量的值 } mutating func changeAgeZero() { //如果结构体中的函数要修改成员变量 那么在定义的时候嵌套加mutating 关键字 self.age = 0 } } var stu1:MyStu = MyStu()//自动调用内部的init()无参的构造 print("stu1_age = \(stu1.age) \(stu1.height)") //有参数的构造调用 var stu2:MyStu = MyStu(age: 30, height: 188)//自动调用内部的init有参数的构造 print("stu2_age = \(stu2.age) \(stu2.height)") //调用结构体里面的方法 stu2.sleep() stu1.sleep() stu2.changeAgeZero() print("stu2_age = \(stu2.age) \(stu2.height)")
相关文章推荐
- Swift 嵌套类型
- 10.Swift 中的闭包
- swift-闭包
- swift-函数-2
- SWIFT学习笔记 2016/02/01
- swift-函数-1
- iBeacon 的第一篇(基于Swift实现)
- swift-array-dictionary
- Swift快速入门(二)基本数据类型
- Swift快速入门(二)基本数据类型
- 业界资讯:swift的API正在转变
- Golang, Swift, Nodejs 和 Rust 性能对比
- Swift-非逃逸闭包
- Swift-闭包是引用类型
- Swift-捕获值
- Swift-运算符
- swift语言主流学习文档
- 9. Swift 中的函数
- 屏幕适配 swift纯中文翻译 响应式编程 环信 第三方IM聊天的SDK
- swift算法手记-8