美文网首页Swift开发iOS开发iOS Developer
Swift学习_基本语法之属性&方法

Swift学习_基本语法之属性&方法

作者: CN_HarrySun | 来源:发表于2017-02-08 16:11 被阅读56次
Swift

1.属性

属性用于描述类、结构体或枚举的值。在swift中属性分为:存储属性、计算属性、类属性三种

1.存储属性
struct Person{

    let name:String // 存储属性
    var age:Int     // 存储属性
}

var person = Person(name:"HarrySun",age:21)
print(person.name,person.age)   // 打印   HarrySun 21
person.age = 19
print(person.age)   // 打印   19

//person.name = "lisa"  // 报错因为结构体是值类型
2.计算属性

** 计算属性,不存储值,而是提供了一个getter和setter方法来分别进行获取值和设置其他属性的值,getter使用get关键字,setter使用set关键字。**

class Student{

    var lenght:Int = 10

    var age:Int{
        get{
            return lenght * 2
        }
        set{
            lenght = newValue / 2
        }
    }

    var height:Int{
        get{
            return lenght * 4
        }   // 只读计算属性
    }

    var weight:Int{
        return lenght * 10
    }   // 只读计算属性可以省略掉get
}

var student = Student()
print(student.weight)   // 打印   100     // 调用计算属性,weight只读,值是由存储属性的lenght也被改变
print(student.age)   // 打印   20
print(student.lenght)   // 打印   10


student.age = 30    // 调用计算属性,因为支持读和写,所有内部的存储属性lenght也被改变
print(student.age)  // 打印   30
print(student.lenght)   // 打印   15
3.类型属性

** 类型属性一般是与具体的实例个体没有关系,比如一个学生的学费,这是所有学生都一样了,所以这和学生个例没有关系,那这就要声明成类型的属性,一般是在声明属性前面加一个关键字static,结构体和枚举也是有类型属性**

struct Studeng2 {

    static var diriction:String = "北京"
    var name:String = ""
    var age:Int = 1
}

// 访问类型属性
print(Studeng2.diriction)  // 打印   北京      

// 用类定义
class Student3{

    static var diriction:String = "上海"
    var name:String = ""
    var age:Int = 0
}
print(Student3.diriction)  // 打印   上海
4.懒存储属性

** 懒存储属性是在使用的时候才计算提供**
** 在声明属性前加lazy来标识**

class PersonInfo{
    var personFileName = "personInfo.txt"
}

class PersonDataManager{
    lazy var personInfo = PersonInfo()
    var data = String()
}

let manager = PersonDataManager()
manager.data += "some data"
print(manager.data)     // 打印   some data

//在此刻用的时候才创建personInfo属性
print(manager.personInfo.personFileName)     // 打印   personInfo.txt  
5.属性观察器

** 用willSet和didSet **

class Person2{
    var name:String?
    var age:Int = 0{
        willSet{
            print("将要设置年龄值为\(newValue)")
        }
    
        didSet{
        
            if age < 10 {
                name = "lucy"
            }else{
                name = "lily"
            }
             print("\(name!)的年龄从\(oldValue)改为\(age)")
        }  
    }
}


let per = Person2()
per.age = 0
per.age = 20

注:这里注意,当设置的新值和旧值相同时也会被调用

让我们来思考一下上方代码的运行结果


上方代码运行结果

2.方法

方法其实就是定义在类、结构体和枚举中的函数

class Person3 {
    var country = "北京"
    var age = 0

    // 实例方法
    func goBack(){
        print("回\(country)")
    }

    // 类型方法
    static func getInfo(name:String) -> String{
    
        return name
    }
}

var person3 = Person3()
// 实例方法的调用
person3.goBack()     // 打印   回北京

// 类型方法的调用
print(Person3.getInfo(name: (name:"HarrySun")))     // 打印   HarrySun

小结

代码已上传至git:
--> 传送门:Swift_基本语法

附录

查看完整专栏《Swift学习》

有问题欢迎指正以及相互探讨 —— CoderSun

相关文章

网友评论

    本文标题:Swift学习_基本语法之属性&方法

    本文链接:https://www.haomeiwen.com/subject/rjzvittx.html