文档章节

Swift -- 结构体和类

上官尘
 上官尘
发布于 2016/03/01 18:09
字数 525
阅读 27
收藏 0
点赞 1
评论 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 ⋅ 0

Swift 个人学习笔记 - 08: 类和结构体

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

amc ⋅ 2017/03/10 ⋅ 0

swift学习之类和结构体

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

zh_iOS ⋅ 2016/11/24 ⋅ 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

Swift结构体与类

在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了。这是因为结构体能够做的事情,类完全可以取而代之。 而Swift语言...

智捷课堂 ⋅ 2014/08/30 ⋅ 0

08--swift之类与结构体

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

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

iOS开发系列--Swift语言

概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其...

jianxin160 ⋅ 2015/08/18 ⋅ 0

Swift中的方法(Methods)

写在前面 swift中结构体和 枚举 也能够定义方法,这是swift和OC的主要区别之一。在OC中类是唯一能定义方法的类型。但是在swift中类,结构体,枚举中都可以定义方法。 一、实例方法(Instanc...

zh_iOS ⋅ 2016/11/17 ⋅ 0

Swift - 类、属性、方法

一、类 Swift类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言所不同的是,Swift并不要求你为自定义类去创建独立的接口和实现文件。...

Albert_Lee ⋅ 2017/12/04 ⋅ 0

Swift类与结构体

类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特...

智捷课堂 ⋅ 2014/06/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 34分钟前 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部