[swift学习之四]结构体练习

/*
 注意点:
 1:struct和class里面的变量都要初始化,否则不能创建实例。
 2:struct也得实例化,加()
 3:struct作为参数的话,是不能修改的,需要加inout关键字,而且实参需要取地址。
    这个和oc不太一样,首先oc在arc下是禁止里面有引用类型,其次oc的一个指针搞定这个,用不到inout。
 struct Department {
    NSInteger no;
 };
 -(void)UpdateDept:(struct Department*)dept
 {
    dept->no = 30;
 }
 - (void)viewDidLoad {
    [super viewDidLoad];
    struct Department d;
    d.no = 20;
    [self UpdateDept:&d];
    NSLog(@"%ld",d.no);//30
 }
 不过总的来说还是swift好。
 4:只有类是引用类型,其他类型全部是值类型。值类型还包括整型、浮点型、布尔型、字符串、元组、集合和枚举。
 5:系统提供常见结构体 有 Bool  Int Float Double  String 等
 */
struct Department {
    typealias DEPT = Department
    var no : Int = 0
    var name : String = ""
    var nsName: NSString = ""
    init(ano:Int,aname:String){
        self.no = ano
        self.name = aname
    }
    init(aname:String){
        self.no = 5
        self.name = aname
    }
    func Description() -> String {
        return "no:\(self.no)name:\(name)"
    }
}

/*前置预算符*/
prefix func ++(inout Left: Department) -> Department {
    Left.no = Left.no + 1
    return Left
}
/*后置预算符*/
postfix func --(inout Left: Department) -> Department {
    Left.no = Left.no - 1
   return Left
}
/*比较预算符*/
func ==(Left: Department, Right: Department) -> Bool {
     return Left.no == Right.no
}
/*运算符的东西以后再说,先贴个常用的方式:
 infix operator ^^ {associativity left precedence 255}
*/
func updateDept(inout aDept: Department) -> Void {
    aDept.nsName = "After Update"
}

var dept = Department.DEPT(aname: "Hello")
++dept
dept--
let dept2 = dept
updateDept(&dept)
if dept == dept2{
    print(dept2.Description())
}

总的来说,虽然没有指针,但swift的结构体的处理基本没有蹩脚的地方,很好啊。

时间: 2024-08-13 15:15:07

[swift学习之四]结构体练习的相关文章

Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚. 一:结构体声明 格式: struct 结构体名 { } 说明: 1: struct 是定义结构体的关键字 例子 /* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一

swift——类和结构体对比

Swift 中类和结构体有很多共同点.共同处在于: ?       定义属性用于储存值 ?       定义方法用于提供功能 ?       定义下标用于通过下标语法访问值 ?       定义初始化器用于生成初始化值 ?       通过扩展以增加默认实现的功能 ?       符合协议以对某类提供标准功能 更多信息请参见属性,方法,下标,初始过程,扩展,和协议. 与结构体相比,类还有如下的附加功能: ?       继承允许一个类继承另一个类的特征 ?       类型转换允许在运行时检查和

Swift中类和结构体

1. 类和结构体对比 Swift 中类和结构体有很多共同点: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 定义构造器用于生成初始化值 通过扩展以增加默认实现的功能 符合协议以对某类提供标准功能 与结构体相比,类还有如下的附加功能: 继承允许一个类继承另一个类的特征 类型转换允许在运行时检查和解释一个类实例的类型 解构器允许一个类实例释放任何其所被分配的资源 引用计数允许对一个类的多次引用 2. 类和结构体的定义语法 类和结构体有着类似的定义方式.我们通过关键字class和s

Swift类与结构体

类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特定的标准 功能 类比结构体多出的功能: 能够继承另外一个类 能够核对运行期对象的类型 析构对象释放资源 引用计数允许一个类实例有多个引用 类和结构体的定义 定义类和结构体: [html] view plaincopy class SomeClass { // class definition goe

swift 类 与 结构体

这两天突然有人问我  swift里面 类和 结构体  有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift  语言 虽然也已经出来很久了,但是总感觉还有许多东西 不如oc稳定.  每个 版本的 swift  都会有比较大的变动. 所以干脆先等等,等到工作不忙 swift也稳定了,然后再看也不迟. 但是 有些里面已经稳定了的东西可以先作为了解内容.  今天就说下类  和  结构体. http://c.bianche

swift 类和结构体

1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字母开头的匈牙利表示法. 结构体总是通过被复制而进行代码传递的. struct SForm{ var iXX:Int = 99 var strHello:String = "dsf" func testFunc(iXX:Int)->Int{ return iXX+1 } } class

Swift中的结构体,类,协议,扩展和闭包的用法以及? 和 !的区别

// MARK: - 1.结构体 //1.声明一个结构体 struct Rect {    // 声明结构体变量的属性(存储属性)    var x:Float    var y:Float    var width:Float    var height:Float    // 声明结构体属性,要使用static    static var description:String?        // 声明一个计算属性(是用来专门计算结构体变量属性的setter,和getter方法,其本身没有存

Swift基础(类,结构体,函数)

import Foundation // 创建一个类 class Student { // 属性(类的属性必须赋初值,如果不赋值,需要写自定义方法) var studentName: String var studentAge: Int // 方法 func fallInLove(girlName:String) { print("\(self.studentName)看上隔壁的\(girlName)") } // 构造方法(自定义init方法) init (studentName1:

c语言学习笔记 - 结构体

前面在学习枚举类型enum时就觉得有些不习惯,那里习惯理解了的话,到结构体这里的理解就更方便些了,因为两者有一些相似的地方. //用结构体登记一个学生的姓名和分数,如果小于60分,显示bad #include <stdio.h> typedef struct{                 char name[20]; float points; char *appraise;  //这里用字符型指针,如果用普通字符串,外面无法赋值} students; //定义一种结构体,typeof 数