[swift学习之四]结构体练习
来源:互联网 发布:linux删除文件权限不够 编辑:程序博客网 时间:2024/05/21 11:18
/* 注意点: 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")++deptdept--let dept2 = deptupdateDept(&dept)if dept == dept2{ print(dept2.Description())}
总的来说,虽然没有指针,但swift的结构体的处理基本没有蹩脚的地方,很好啊。
0 0
- [swift学习之四]结构体练习
- iOS学习笔记44-Swift(四)枚举和结构体
- iOS学习笔记44-Swift(四)枚举和结构体
- Swift 之结构体
- swift 数组、字典、集合、结构体、枚举——swift学习(四)
- [swift学习之二]基本语法练习
- [swift学习之三]枚举练习
- [swift学习之五]类练习
- [swift学习之六]@autoClosure练习
- [swift学习之八]泛型练习
- [swift学习之十]扩展语法练习
- [swift学习之十一]协议语法练习
- [swift学习之十二]二维码创建练习
- [swift学习之十三]二维码扫描练习
- [swift学习之十五]指针练习
- [swift学习之十六]RunTime练习一
- [swift学习之十七]RunTime练习二
- Swift 学习之枚举和结构体—003
- iOS私有API的了解
- 设计模式C++学习笔记之十(Builder建造者模式)
- sftp免密登录
- 内存管理(malloc和free用法)
- 纪念一下
- [swift学习之四]结构体练习
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- API网关(API Gateway)
- 设计模式之策略模式
- java 读取图片文件再生成新图片
- leetcode--Remove Element
- SocketChannel类(用于阻塞或非阻塞式传输数据) 创建SocketChannel要使用SocketChannel类的静态工厂方法。 SocketChannel open():创建未连接的
- 应用之星:免费的无技术要求的 在线电子书制作平台
- React Native常用组件样式总结