Swift--10结构体
来源:互联网 发布:java ssh框架学习书籍 编辑:程序博客网 时间:2024/05/18 03:18
struct Point {
//结构体中可以定义成员变量
var x:Double = 0
var y:Double = 0
//系统默认创建两个构造方法,用于初始化成员变量
//并且不需要返回,也不需要使用func关键字
//1、无参
init() {
print("无参数构造方法")
}
//2、带参
init(x:Double, y: Double) {
print("成员逐一构造器")
self.x = x
self.y = y
}
//3、构造方法可以定义多个,系统会根据调用形式进行区分
init(newX:Double) {
x = newX
}
//结构体中可以定义成员方法
func isOnAxis() ->Bool {
ifx==0|| y==0 {
returntrue
}
returnfalse
}
//除了构造方法,其它方法中不能修改成员变量,除非添加mutating
mutatingfunc changeToOriginal() {
x =0
y =0
}
//可以定义结构体方法(不属于任何实例变量,通过结构体名调用,类似于类方法)
staticfunc structFunc() {
print("This is struct function")
}
//可以定义结构体变量(不属于任何实例变量,通过结构体名调用)
staticvar value: Int =0
}
//结构体成员逐一构造器
var p1 = Point(x:100, y: 0)
//若所有成员变量有初值则可以使用无参的形式
var p2 = Point()
p2.x =10
p2.y =20
print(p2.isOnAxis())//false
//通过自定义的构造方法创建变量
var p3 = Point(newX:10)
p3.changeToOriginal()
print(p3)//Point(x: 0.0, y: 0.0)
//结构体是值类型
var p4 = Point(x:100, y: 100)//成员逐一构造器
var p5 = p4
//改变p4的值,对p5没有任何影响
p4.changeToOriginal()
print("p5 = (\(p5.x),\(p5.y))")//p5 = (100.0, 100.0)
//调用结构体方法
Point.structFunc()//This is struct function
//调用结构体变量
Point.value =100
print(Point.value)//100
struct Size {
var width:Double = 0.0
var height:Double = 0.0
}
struct Rect {
//origin和size为存储属性
var origin:Point = Point()
var size:Size = Size()
//center为计算属性(不能存储,是计算得来的)
//若只有getter方法,没有setter方法,则称为只读计算属性
var center:Point {
//getter方法
get {
let x =origin.x +size.width/2
let y =origin.y +size.height/2
returnPoint(x: x, y: y)
}
//serter方法,newValue是默认的参数名,也可自己指定
set/*(newValue)*/ {
origin.x = newValue.x -size.width/2
origin.y = newValue.y -size.height/2
}
}
func createValue() ->Int {
print("产生随机数")
returnInt(arc4random())
}
//延迟存储属性(懒加载)
lazy var lazyValue: Int =self.createValue()
//属性监视器
var property:Int = 0 {
willSet {
print("即将设置")
}
didSet {
print("已经设置")
}
}
}
var rect = Rect()//无参数构造方法
rect.size =Size(width: 100, height:100)
//在第一次调用的时候才加载
print(rect.lazyValue)//3056669642
print(rect.center)
//成员逐一构造器
//Point(x: 50.0, y: 50.0)
rect.center =Point(x: 100, y:100)
print(rect.origin)
//成员逐一构造器
//Point(x: 50.0, y: 50.0)
//测试属性监视器
rect.property =100
//即将设置
//已经设置
- Swift--10结构体
- 【Swift初见】Swift结构体
- Swift 之结构体
- Swift 类 结构体
- Swift Struct结构体
- Swift-结构体
- swift与结构体
- [Swift]结构体
- swift -结构体
- Swift 结构体
- swift 2.0 结构体
- swift 结构体
- Swift 的结构体
- swift-结构体
- Swift 结构体
- swift中的结构体
- Swift 结构体指针
- Swift 结构体
- struts2标签库详解
- JQuery插件:获取URL信息
- STL--迭代器的使用及在opencv中用迭代器遍历所有的元素
- iOS8新特性学习研究之UIAlertController
- trim($v, chr(0xc2) . chr(0xa0))去除 
- Swift--10结构体
- 20170523memo
- Multi-Core Power-management
- 第九章 JSP标签——《跟我学Shiro》
- 怎样解决Eclipse中新创建的Maven项目不自动创建web.xml文件
- 【开发笔记】JAVA工程升级的差异对比(Spring MVC 4.3.8+Hibernate 5.2.10)
- 基于功耗预算的实时绘制
- 前端面试题
- ObjectMapper把Json转换为复杂的实体类