文档章节

Swift -- 结构体和类

上官尘
 上官尘
发布于 2016/03/01 18:09
字数 525
阅读 27
收藏 0

一:语法定义

swift中结构体和类的结构是相同的,通过关键字和一对大括号来区别。

class SomeClass {
    // 关键字class表示定义一个类
}
struct SomeStructure {
    // 关键字struct表示定义一个结构体
}
/*
Swift 中类和结构体有很多共同点。共同处在于:
定义属性用于存储值
定义方法用于提供功能
定义附属脚本用于访问值
定义构造器用于生成初始化值
通过扩展以增加默认实现的功能
实现协议以提供某种标准功能
*/


//定义一个frame结构体
struct frame {
    var width:Double = 0.0
    var height:Double = 0.0
}
//访问结构体
var r = frame()
print("width = \(r.width) height = \(r.height)")
//如果结构体没有初始值,可以给他赋值
r.width = 11
r.height = 22

//类
class Rect {
    var width:Double = 0.0
    var height:Double = 0.0
    func show() -> Void{
        print("width = \(width) height = \(height)")
    }
}
// 类没有逐一构造器
//var r1 = Rect(width: 10.0, height: 10.0)
var r1 = Rect()
r1.show()
var r2 = r1
r2.show()
// 类是引用类型, 结构体之间的赋值其实是将r2指向了r1的存储控件, 所以他们是两个只想同一块存储空间, 修改其中一个会影响到另外一个
r1.width = 99
r1.show()
r2.show()

二:结构体构造器

struct Rect2 {
    var width:Double
    var height:Double = 0.0
}
//逐一构造器,顺序必须和结构体成员顺序一致,必须包含所有的成员
var r1 = Rect2(width: 10.0, height: 10.0)

三:结构体中定义方法

struct Rect3 {
    var width:Double
    var height:Double = 0.0
    // 给结构体定义一个方法, 该方法属于该结构体
    // 结构体中的成员方法必须使用某个实例调用
    // 成员方法可以访问成员属性
    func getWidth() -> Double{
        return width
    }
}

var r2 = Rect3(width: 10.0, height: 20.0)
// 结构体中的成员方法是和某个实例对象绑定在一起的, 所以谁调用, 方法中访问的属性就属于谁
print(r2.getWidth())

var r3 = Rect3(width: 30.0, height: 20.0)
// 取得r2这个对象的宽度
print(r3.getWidth())


© 著作权归作者所有

共有 人打赏支持
上官尘
粉丝 6
博文 38
码字总数 9881
作品 0
普陀
程序员
Swift讲解专题十——类与结构体

Swift讲解专题十——类与结构体 一、引言 Swift中的类与结构体十分相似,和Objective-C不同的是,Swift中的结构体不仅可以定义属性,也可以像类一样为其定义方法。 Swift中的类与结构体有如下...

珲少
2016/05/16
98
0
Swift 个人学习笔记 - 08: 类和结构体

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/10
0
0
swift学习之类和结构体

类和结构体对比 Swift 中类和结构体有很多共同点。共同处在于: 定义属性用于存储值 定义方法用于提供功能 定义下标操作使得可以通过下标语法来访问实例所包含的值 定义构造器用于生成初始化值...

zh_iOS
2016/11/24
16
0
swift4.0-11 类和结构体

代码学习swift4.0, 类和结构体 // // main.swift // SwiftLearn11-类和结构体 // // Created by iOS on 2018/5/7. // Copyright © 2018年 weiman. All rights reserved. // import Foundat......

小曼Study
05/07
0
0
08--swift之类与结构体

1.简介 和c语言不同,在swift中结构体和类有相同的结构,都具有属性和方法 但是不要求定义和实现在两个文件中 2.类与结构体的对比 class CustomerManger { var name:String! var Pid:Int! }...

飞翔的小二哈
2016/03/09
16
0

没有更多内容

加载失败,请刷新页面

加载更多

cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
14分钟前
1
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
40分钟前
1
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
3
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部