随着一步步的学习,学习到的新知识越来越多了,不管是新的还是旧的,都禁不住时间的堆积,再熟悉的知识点时间久了都会渐渐的忘记,也许这就是人们生活中一种潜在的惰性吧,看似非常熟悉的东西,等到真正要用的时候,却拿不出手来,总是似懂非懂的,所以无论知识点多么多,过的时间多久,我们都要经常拿出来练习下,以免忘记.这些对于我们来说都是非常重要的,有的人会认为我记性非常好,写一遍都可以记住,但是真的是这样吗,所话说的好,好记性不如烂笔头,说的就是那些好吃懒做的人,所以我希望大家都可以多动手,经常练习我们所学过的知识,让他真正的牢记于心!

   下面就为大家讲解下今天所学习的知识点吧,那就是类和结构体:

   类是用关键字 class来表示的, 结构体是用struct来表示的,下面附上具体代码:

  1. class SomeClass {
  2.  
  3. }
  4.  
  5. struct Length {
  6. //在Swift中可以对变量初始化
  7. var start : Float = 0.0
  8. var end : Float = 0.0
  9. //在Swift中可以定义方法
  10. func calLength() {
  11. println(self.end - self.start)
  12. }
  13. }
  1. //调用了默认的构造器 init
  2. var length = Length()
  3. //点语法访问元素
  4. length.start = 7.0
  5. length.end = 3.0
  6. length.calLength()
  7.  
  8. // 逐一构造器 , 只有结构体才有的, 类是没有的
  9. var len = Length(start: 3.0, end: 9.9)

   以上跟OC中有点相似,可以通过点语法访问元素变量。

   下面再附上具体示例:

  1. func calLength(length: Length) {
  2. println(length.start - length.end)
  3. }
  4.  
  5. calLength(length)

   这个是用来计算点之间的距离的。

   除此之外我们今天还学习了计算类型,不是直接存值,而是系统提供了一个getter方法来获取值,并且还提供了一个setter方法来设置新的值具体示例如下

  1. struct Rect {
  2. var origin = Pointed()
  3. var Rect = hah()
  4. var center : Pointed {
  5. get{
  6. let centerX = self.origin.x + self.Rect.width / 2.0
  7. let centerY = self.origin.y + self.Rect.height /
  8. return Pointed(x: centerX, y: centerY)
  9. }
  10. set(newCenter){
  11. origin.x = newCenter.x - self.Rect.width /
  12. origin.y = newCenter.y - self.Rect.height /
  13. }
  14. }
  15. //使用mutating关键字来修饰 作用:可以修改属性的值
  16. mutating func calCenter() {
  17. // return Pointed(x: self.origin.x + self.Rect.width / 2.0, y: self.origin.y + self.Rect.height / 2.0)
  18. self.center = Pointed(x: self.origin.x + self.Rect.width / , y: self.Rect.height / + self.origin.y)
  19. }
  20. }
  21.  
  22. var rect = Rect(origin: Pointed(x: , y: ), Rect: hah(width: , height: ))
  23. rect.calCenter()
  24.  
  25. var rect1 = Rect()
  26. rect1.origin.x =
  27. rect1.origin.y =
  28. rect1.Rect.height =
  29. rect1.Rect.width =
  30. rect1.center
  31. rect1.center = Pointed(x: , y: )
  32. rect1.origin

    通过mutating关键字可以进行属性值得修改。

    类跟结构体的选择:

    按照通用的准则:当符合一下其中一条或者多条条件的时候,请考虑使用结构体

  1.结构体大的使用目的:用来封装尽量少得简单数据

  2.结构体拷贝的时候,属于值得拷贝

  3.任何在结构体重存储的值类型属性,都会被拷贝,而不是引用

  4.结构体无需要去继承另一个已存在的类型的属性或者行为

   虽然今天讲的不是很多吧,更多的是回顾以前所学习的知识点,虽然算不上是大牛吧,但是还是希望可以和友友们多进行交流,不管是技术上,还是什么,都希望可以从中得到提高,所以希望大家都不吝赐教了,最后为大家附上本堂课的一个练习题,题目是这样的:定义一个Student的结构体, name,age作为属性, 构造方法(对name,age赋初值),实例方法(pringStuInfo),类方法(printStuSorry)。下面便是详细代码了:

  1. struct Student {
  2. static var name = "小花"
  3. static var age = 0.0
  4. static func printStuSorry() {
  5. println("ByeBye")
  6. }
  7. func pringStuInfo() {
  8. println("哈哈, 你错了")
  9. }
  10. }
  11.  
  12. Student.name = "网吧"
  13. Student.name
  14. Student.printStuSorry()
  15. var stu = Student()
  16. stu.pringStuInfo()
  17.  
  18. struct Student1 {
  19. var name : String?
  20. var age : Int?
  21.  
  22. init() {
  23. self.name = "老王"
  24. self.age =
  25. }
  26. init (name:String, age:Int) {
  27. self.name = name
  28. self.age = age
  29. }
  30. func printStuInfo() {
  31. //字符串输出:""
  32. println("name = \(self.name!) age = \(self.age!)")
  33.  
  34. println("小李子 = \(self.name!) age = \(self.age!)")
  35. }
  36. mutating func changeName(newName: String) {
  37. self.name! = newName
  38. }
  39.  
  40. static func printStuSorry() {
  41. println("我粗了~×")
  42. }
  43. }
  44.  
  45. var Stu2 = Student1()
  46. Stu2.changeName("乔明")
  47. Stu2.printStuInfo()
  48. Student.printStuSorry()
  49.  
  50. class Teacher {
  51. var name : String?
  52. var age : Int?
  53. init() {
  54. self.name = "老李"
  55. self.age =
  56. }
  57. init(name: String, age: Int) {
  58. self.name = name
  59. self.age = age
  60. }
  61.  
  62. func printTeachInfo() {
  63. println("name = \(self.name!), age = \(self.age!)")
  64. }
  65.  
  66. class func printTeachSorry() {
  67. println("错了错了")
  68. }
  69. }
  70.  
  71. var stu3 = Teacher()
  72. stu3.printTeachInfo()
  73. Teacher.printTeachSorry()

   好了今天就到这里了,由于今天所学习的东西并不是很多,所以今天就不说那么多了,明天我们就要学习UI部分了,虽然以前也学习过,但是这次是要用一种新的语言来写的,想必大家多多少少都会知道点的吧,所以在明天的博客中,还望大家多提意见了,加油加油!

  

Swift学习之类和结构体的创建的更多相关文章

  1. 站在OC的基础上快速理解Swift的类与结构体

    阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...

  2. Swift学习——A Swift Tour 枚举和结构体

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/28588095 Enumerations ...

  3. swift 的枚举、结构体、类

    一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...

  4. Swift - 2 (?和!、结构体、类、协议、扩展、闭包)

    1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 ...

  5. Swift 的类、结构体、枚举等的构造过程Initialization(下)

    类的继承和构造过程 类里面的全部存储型属性--包含全部继承自父类的属性--都必须在构造过程中设置初始值. Swift 提供了两种类型的类构造器来确保全部类实例中存储型属性都能获得初始值,它们各自是指定 ...

  6. swift 第十一课 结构体定义model类

    结构体是可以作为 model 类使用的不过也要 写下的创建方法 import UIKit/***创建一个model 结构,重写init 方法,结构体的属性不能出现可选类型**/ struct Mode ...

  7. ucos实时操作系统学习笔记——内核结构和任务创建

    对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...

  8. iOS学习06C语言结构体

    1.结构体的概述 在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一. 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高 ...

  9. C#学习笔记之结构体

    1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...

随机推荐

  1. git 学习笔记一

    1.git的 介绍 分布式和 集中式 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟, ...

  2. ncsim仿真VHDL

    ncsim仿真VHDL 1.文件列表 ctrl.vhd design_io.vhd tb.vhd compile.nc simulate.nc ./shm/shmtb.tcl 2. Compile你的 ...

  3. Proguard 保留native methods的问题

    发现一个奇怪的问题,如果使用下面的配置来keep的话,native的方法还是被删掉了,百思不得其解. -keepclasseswithmembers class * {     native *; } ...

  4. ORACLE SQL 组函数【weber出品必属精品】

    组函数:对一组数据进行加工,每组数据返回一个值 常用的组函数:count()  avg()  max()   min()  sum()   count()函数  1. count(*) :返回总共的行 ...

  5. 常见的DoDataExchange什么意思

    该函数中的代码是由ClassWizard自动加入的.DoDataExchange只有一个参数,即一个CDataExchange对象的指针pDX.在该函数中调用了DDX函数来完成数据交换,调用DDV函数 ...

  6. memcached的安装

    最近在研究怎么让Discuz!去应用Memcache去做一些事情,记录下Memcache安装的过程. Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新 ...

  7. 了不起的分支和循环02 - 零基础入门学习Python008

    了不起的分支和循环02 让编程改变世界 Change the world by program 上节课,小甲鱼教大家如何正确的打飞机,其要点就是:判断和循环,判断就是该是不该做某事,循环就是持续做某事 ...

  8. C语言中关于字符串的一些常用函数

    使用以下时应当在头文件中加入string.h getch()为当你键入任何一个值时,返回但是并不显示,立马编译结束,返回的是asc码  getchar():当你键入回车之后才算是输入结束,并且可以用p ...

  9. 论如何进CSDN博客排名前500

    http://www.jtahstu.com/blog/post-71.html 目前该方法并不适用于博客园,显然写博客园的程序员智商要高些.

  10. Hough Transform直线检测

    本文原创,如转载请注明出处. Hough Transform 是一种能提取图像中某种特定形状特征的方法,可以将其描述成一种把图像空间中的像素转换成Hough空间中直线或曲线的一种映射函数.通过利用Ho ...