swift学习-类,结构的属性-12/25

今天周五。基本的任务都已完成,swift学习也顺利了许多。
今天发现一本基于swift2.0的教材,比我原来看的那边要更新,而且更薄一点,就以这本书为主继续学吧。目前看到118页。
中午上ios论坛,又发现一本讲ios开发框架的书,以swift为基础,只有50页,看完了这本,大概就可以正式开始我的游戏开发了。
1 类和结构
所有的结构体都有一个自动生成的成员逐一初始化器,用于初始化新结构体实例中成员的属性。新实例中给个属性可以通过属性的名称传递到成员逐一初始化器中。
例如:

struct Resolution {
    var width = 0
    var height = 0
}

var resolution = Resolution() //赋默认值
var resolution1 = Resolution(width: 3, height: 4)

注:与结构体不同,类实例没有默认的成员逐一初始化器。
2 结构体和枚举都是值类型。值类型被赋值给一个变量,常数,或者被传递给一个函数时,实际上操作的是其的拷贝。
在swift中,所有的基本类型:整数,浮点数,布尔值,字符串,数组,字典都是值类型,并且都是以结构体的形式在后台实现的。
所有的结构体的枚举都是值类型,这意味着它们的实例,以及实例中包含的任何值类型属性,在代码中传递的时候都会被复制。
注意:这点和python完全不同,需要特别注意。
「===」恒等运算符,判断两个常量或者变量是否引用同一个实例。
「!==」
3 延迟存储属性。使用lazy修饰的属性为延迟加载属性,只有在第一次访问时才会创建

class DataImporter {
    var fileName = "1.txt"
}

class DataManager {
    lazy var importer = DataImporter() //不可以用let声明
    var data = [String]()
}

let manager = DataManager()

manager.data.append("123")
print(manager.importer.fileName) //只有在第一次访问时才会创建

4 计算属性。除了存储属性外,swift还提供了计算属性。计算属性本身并不存储值,但是提供一种get和set方法来获得值,或设置其他属性的值。
例如:

struct Point {
    var x = 0.0
    var y = 0.0
}

struct Size {
    var width = 0.0
    var height = 0.0
}

struct Rect {
    var origin = Point()
    var size = Size()
    var center: Point {
        get {
            return Point(x: origin.x + 2, y: origin.y + 2)
        }

        set(newPoint) {                       //便捷写法 set {  origin.x = newValue.x ….}
            origin.x = newPoint.x
            origin.y = newPoint.y
        }
    }
}

var square = Rect()

print(square.center)

square.center = Point(x: 1, y: 3)

print(square.origin)

明天又是周末了。
虽然还是有雾霾,还是蛮开心的。

你可能感兴趣的:(swift学习-类,结构的属性-12/25)