1、结构体(小的类就是用struct来写)

struct arrow{
  var x=0,y=0
}

2、类(常用)

class a{
  var a=10
  var b=20
}
var b=a()  //实例化
print(b.a)  //10

3、类(class)与结构体(struct)的简易不同

(1)class 不能直接用 x(a:1) ,必需要定义一個 constructor

struct SRectangle {
  var width = 200
}
var sRect = SRectangle()  //实例化
sRect = SRectangle(width:300)  //设置里面的值,class这样的话就会报错
print(sRect.width)   //300

(2)class共用赋值地址,struct赋值地址分开

  1、struct

var sRect = SRectangle()
var sRect2 = sRect
sRect2.width   // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2
sRect2.width = 500
sRect.width   // sRect.width 值不受 sRect2 影響還是 200

  2、class

var cRect = CRectangle()
var cRect2 = cRect
cRect2.width   // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2
cRect2.width = 500
cRect.width   // cRect.width 也改變成了 500

4、计算属性中的getter(描述属性如何计算及返回语句)

struct data{
  let name="a"
  var money=0
}
class random {
  var my=data()
  var state="carry"
  var work:data{  //继承data的类型
    get{        //不可忽略
      switch state{
        case "carry":
        my.money+=1000
        default:
        my.money+=200
      }
    return my
    }
  }
}
var HI=random()
print(HI.my.money)  //0
print(HI.work.money)  //1000
HI.state="" 
print(HI.work.money)  //1200

5、计算属性中的setter(有新值(newValue)后如何影响其他的值)

struct data{
  var name="a"
  var money=0
}
class random {
  var my=data()
  var work:data{
    get{      //不可忽略
      return my
    }
    set{
      my=newValue
    }
  }
}
var HI=random()
HI.work=data(name:"hi",money:500)
print(HI.my.money)  //500

6、属性监视器,事前响应(willSet),时候响应(didSet)

class money{
  var tatal=0{
    willSet{
      print("当前\(newValue)")  //本身有变量newValue
    }
    didSet{
      print("增加\(tatal-oldValue)")  //本身有变量oldValue
    }
  }
}
var money1=money()
money1.tatal=1000  //当前1000 增加1000
money1.tatal=4000  //当前4000 增加3000

  

  

Swift,结构体与类的更多相关文章

  1. Swift结构体与类

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

  2. Swift 结构体和类

    //*---------------------结构体-------------*/ //swift结构体也具有封装的概念 //swift结构体比OC C语言里面的结构体更加进了一步,里面可以有方法, ...

  3. Swift结构体和类

    Swift结构体 在Swift标准中,绝大多数的公开的类型都是结构体,而枚举和类只占很小的一部分 比如Bool.Int.Double.String.Array.Dictionary等常见的类型都是结构 ...

  4. iOS Swift结构体与类的方法调度

    前言 hello,小伙伴们:在忙碌中闲暇之余给大家聊聊swift的知识点,今天给大家带来的是swift中结构体与类的方法调度详细区别,希望对你有所帮助,好了废话不用多说,接下来步入主题! 1.普通方法 ...

  5. 学习swift从青铜到王者之swift结构体和类08

    定义 // 定义类 class StudentC{ } // 定义结构体 struct StudentS{ } 定义存储属性 // 定义类 class StudentC{ var name:Strin ...

  6. Swift具体解释之六----------------枚举、结构体、类

    枚举.结构体.类 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正,一起学习. 1.枚举 枚举是用来定义一组通用类型的一组相关值 ,关键字enum ...

  7. 10 结构体和类 - —— 《Swift3.0 从入门到出家》

    Swift中的面向对象5个要素:枚举.结构体.类.协议.扩展 面向对象研究的是对象,完成一件事情需要多个对象参与,是生活的映射 Swift中结构体和类非常相似,也就是结构体能完成类的所有功能.结构体是 ...

  8. C#中结构体和类的区别

    结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的 C#结构体和类的区别问题:这两种数据类型的本质区别主要是各自指向的 ...

  9. C C++ 中结构体与类

    先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错 1>d:\myproject\visual studio 2013\projects\myc++\main.c(71 ...

  10. Swift 结构体的使用

    Swift 结构体是构建代码所用的一种通用且灵活的构造体. 我们可以为结构体定义属性(常量.变量)和添加方法,从而扩展结构体的功能. 与 C 和 Objective C 不同的是: 结构体不需要包含实 ...

随机推荐

  1. CDQ 学习笔记

    CDQ分治 CDQ(陈丹琦)分治是一种特殊的分治方法. 它只能处理非强制在线的问题. CDQ分治在维护一些动态的凸包.半平面交问题也有一定应用,然而本渣渣并不会. CDQ分治基于时间分治,整体二分基于 ...

  2. 【BZOJ】1579: [Usaco2009 Feb]Revamping Trails 道路升级

    [算法]分层图最短路 [题解] 考虑k层一模一样的图,然后每个夹层都在每条边的位置新加从上一层跨越到下一层的边权为0的边,这样至多选择k条边置为0. 然后考虑方便的写法. SPFA 第一次SPFA计算 ...

  3. DotNETCore 学习笔记 宿主

    Hosting -------------------------------------------------------------------------- Setting up a Host ...

  4. [bzoj4516][Sdoi2016]生成魔咒——后缀自动机

    Brief Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2]. 一个魔咒串 S 的非空字串被称为魔咒串 S 的生 ...

  5. 6.flume实战(三)※

    需求:将A服务器上的日志实时采集到B服务器上面去 大致原理: 技术选型: exec source + memory channel + avro sink avro source + memory c ...

  6. sudo cd为什么不能够执行

    问题描述 我想要cd到/etc/docker,但是它给我一个权限不够的错误,然后,我想到使用sudo cd /etc/docker时,它告诉我sudo: cd:找不到命令. 于是,郁闷的我就去上网找了 ...

  7. KVM(三)I/O 全虚拟化和准虚拟化

    在 QEMU/KVM 中,客户机可以使用的设备大致可分为三类: 1. 模拟设备:完全由 QEMU 纯软件模拟的设备. 2. Virtio 设备:实现 VIRTIO API 的半虚拟化设备. 3. PC ...

  8. poj 1654(利用叉积求面积)

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17937   Accepted: 4957 Description ...

  9. 如何理解reliability

    首先推荐看: https://wenku.baidu.com/view/f55f400c52ea551810a68746.html 复习一下均值方差 然后重点看: https://www.social ...

  10. BZOJ 1008: [HNOI2008]越狱-快速幂/取模

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8689  Solved: 3748 Description 监狱有 ...