Swift 系统学习 19 结构体的默认构造方法和自定义构造方法
来源:互联网 发布:python 极大似然估计 编辑:程序博客网 时间:2024/05/22 17:47
//: Playground - noun: a place where people can playimport UIKit/* * 本节主要内容: * 1.结构体的默认构造方法和自定义构造方法 *//* * 1.默认构造init方法:没有添加任何的init方法, 由编译器自动生成的方法; 包含所有属性的init方法 * 1.1 默认构造方式失效: 当在声明结构体阶段, 就默认给属性赋值 * 2.没有添加init构造方法, 原则就是使用编译器自动创造init方法 */struct Location { var latitude: Double = 0.0 var longitude: Double //= 0.0}// 第一步: 没有给属性初始值//var beijingLocation = Location(latitude: 39.123, longitude: 116.321)// 第二步: 给所有属性初始值//var shanghaiLocation = Location()//shanghaiLocation.latitude = 36.234//shanghaiLocation.longitude// 第三步: 给部分属性初始值var shenzhenLocation = Location(latitude: 33.123, longitude: 115.345)/* * 添加自定义的init方法: * 1.要求:方法名只能是init; 参数类型没有要求(不一定和编译器提供的方法一样); 方法声明不能有返回值(->; return) * 2.作用: 构造/实例化对象(属性进行赋值) * 3.如果添加自定义的init方法, 默认构造方法失效 */struct LocationNew { var latitude: Double = 0.0 var longitude: Double = 0.0 // 添加自定义的构造方法 // 假定参数格式: "39.123,116.456" // 错误参数格式: "39.123*116.456" init(coordinateString: String) { // 获取子字符串 // 1.获取逗号所在的index let commaRange = coordinateString.range(of: ",") let commaIndex = coordinateString.index((commaRange?.lowerBound)!, offsetBy: 0) // 2.subString to获取纬度 let firstElement = coordinateString.substring(to: commaIndex) // 3.subString from获取经度 let secondElement = coordinateString.substring(from: coordinateString.index(commaIndex, offsetBy: 1)) latitude = Double(firstElement)! longitude = Double(secondElement)! } // init方法可以多个 // 原则: 在编译没有歧义的情况下, self.可以省略 init(latitude: Double, longitude: Double) { self.latitude = latitude self.longitude = longitude } init() { latitude = 0.0 longitude = 0.0 }}// 实例化, 调用自定义的init方法var newLocation = LocationNew(coordinateString: "39.123,116.456")newLocation.latitudenewLocation.longitudevar beijingLocation = LocationNew()beijingLocation.latitudevar chengduLocation = LocationNew(latitude: 35.123, longitude: 119.335)// 容错处理: 可以处理不符合要求的字符串的格式, init应该是一个可失败的构造方法; init?
0 0
- Swift 系统学习 19 结构体的默认构造方法和自定义构造方法
- 12.6 Swift结构体的构造方法
- Swift 系统学习 20 结构体 添加可失败的构造方法
- Swift 基础学习(指定构造方法和便利构造方法)
- swift学习笔记之构造方法和析构方法
- 构造方法,自定义构造方法
- 13.1 Swift指定构造方法和便利构造方法解析
- Swift-指定构造方法和便利构造方法
- IOS学习笔记05_1-Swift-如何定义类和类的构造方法、重载方法
- Swift UIImageView 构造方法
- Swift中的构造方法
- swift UIImageView构造方法
- swift构造方法
- swift构造方法
- swift构造方法
- Swift-构造方法
- Swift--12构造方法
- Swift中的构造方法
- redis导入导出工具
- K3 二次开发常用数据表
- android应用程序联网需配置
- LeetCode-108. Convert Sorted Array to Binary Search Tree
- protues与keil联合仿真51单片机跑马灯实例
- Swift 系统学习 19 结构体的默认构造方法和自定义构造方法
- java基础—三(运算符&选择结构if)
- 微信小程序文档api
- CSDN日报20170301——《一次dns缓存引发的惨案》
- 细节的把控
- Notification基础详解二(自定义布局通知)
- [看图说话] 基于Spark UI性能优化与调试——初级篇
- Python zip函数介绍
- postman