【Swift初见】Swift结构体
来源:互联网 发布:网站编程 编辑:程序博客网 时间:2024/05/17 22:17
结构体struct我们应该不会陌生,从我们刚开始接触C语言的时候就一直学这个,OC中也有,swift的结构体和C和OC的结构体类似;
当我们定义一个结构体的时候,格式如下:
struct Rect { var width : Double = 0.0 var height : Double = 0.0}
我们这边定义了一个Rect结构体,里面有两个变量,初始值都为0.0,创建一个结构体实例:
var rect : Rect = Rect()
看起来是不是非常的熟悉?跟C还有OC很类似吧。
访问rect这个实例里面的width和height方法也是用点语法:
rect.width = 10rect.height = 10
这样我们就完成了一个结构体的定义和创建一个结构体实例。
假如我们在定义结构体的时候并没有给结构体里面的变量赋初值,那么我们用不带任何参数的构造函数的时候,系统会报错,那么我们可以用带参数的构造函数,也称为逐一函数构造器:
var rect : Rect = Rect(width: 9, height: 9)
值得注意的事:逐一函数构造器的参数顺序不能调整,参数个数不能增减。
结构体的成员方法:
与C还有OC结构体不一样的是,swift的结构体可以包含成员方法,即行为,这就跟面向对象中的类的概念比较类似:
我们给刚刚Rect结构体加上一个面积的方法:
struct Rect { var width : Double = 0.0 var height : Double = 0.0 func getArea () -> Double{ return width * height }}
我们可以看出,方法的定义跟外部全局函数的定义是一样的,那么如何使用该成员方法呢?
其实调用成员变量和调用成员方法是一样的,都是用点语法:
rect.getArea()
我们在定义一个Rect类型的时候,还有另外一个定义方式:
var rect2 : Rect = rect1
rect1是一个Rect类型的变量,定义rect2等于rect1
那么rect2跟rect1是指向同一块内存空间还是单纯的值相同呢?
我们修改rect1的值,然后打印rect1和rect2:
var rect2 : Rect = rect1rect1.width = 30println("rect1.width=\(rect1.width) , rect1.height=\(rect1.height)")println("rect2.width=\(rect2.width) , rect2.height=\(rect2.height)")
我们得到下面的输出:
rect1.width=30.0 , rect1.height=20.0rect2.width=20.0 , rect2.height=20.0
所以我们得出结论:
结构体是值类型,rect2和rect1是两个不同的实例,是2块内存空间。
1 0
- 【Swift初见】Swift结构体
- Swift初见
- Swift 初见
- Swift初见
- Swift初见
- swift初见
- Swift初见
- swift初见
- 【Swift初见】Swift数组
- 【Swift初见】Swift字典
- 【Swift初见】Swift继承
- 【Swift初见】Swift数组(二)
- 【Swift初见】Swift闭包
- 【Swift初见】Swift构造过程
- Swift学习:1.2 Swift初见
- swift之初见
- 【Swift初见】SourceKitService Terminated
- swift语言初见
- c++11 条款1:理解模板类型推导
- AIX下修改网卡的速率
- 分支管理
- VS2008+WDK+Win7 32位 驱动开发环境配置中遇到的问题
- ORACLE 存储过程被锁,编译不了,解锁方法
- 【Swift初见】Swift结构体
- Laravel 4.2 升级 Laravel 5.0 攻略
- java rabbitMQ demo
- TCP与UDP的区别与联系
- java命令行编译运行时提示"错误:找不到或无法加载主类"
- Linux命令汇总
- Android之Tab分页标签的实现方法一-----可滑动的Tab的3种方式
- lua io
- 从头学习javascript