Swift计算属性

来源:互联网 发布:做身份证软件 编辑:程序博客网 时间:2024/06/05 16:02
////  main.swift//  Swift计算属性////  Created by Goddog on 15/7/20.//  Copyright © 2015年 Goddog. All rights reserved.//import Foundationprint("swift的计算属性类似于Java的setter和getter方法,枚举、结构体、类都可以定义计算属性,都有set和get方法哦")/**修饰符 var 计算属性名: 属性类型{    get    {        //get方法执行体,该方法必须有返回值    }    set()    {        //set方法执行体,该方法一定不能有返回值    }}其中修饰符、set可以省略*///枚举定义了一个计算属性enum Season{    case Spring, Summer, Fall, Winter    var info: String    {        //定义get方法        get{            print("get方法")            switch(self)            {            case .Spring:                return "春"            default:                return "无"            }        }        //定义set方法        set(newValue){            print("set方法")            print("传入参数为:\(newValue)")        }    }}var a = Season.Springprint(a.info)      //实际上是调用的getter方法a.info = "秋"      //实际上调用的setter方法//上面的示例只是简单赋值,并没有真正赋值class User{    var first: String = ""    var last: String = ""    //定义计算属性    var fullName: String    {        //定义计算属性的first、last两个属性决定        get{            return first + "-" + last        }        //定义计算属性的set方法,改变first、last两个存储属性        set(newValue){            var names = newValue.componentsSeparatedByString("-")            self.first = names[0]            self.last = names[1]        }    }        init(first: String, last: String)    {        self.first = first        self.last = last    }}let s = User(first: "曹", last: "操")print(s.fullName)   //调用get方法s.fullName = "刘-备"print("firstName: \(s.first), lastName: \(s.last)")//MARK: - setter方法简化/**计算属性的setter方法提供隐式的形参名,newValue上面可以是set{    var names = newValue.componentsSeparatedByString("-")    self.first = names[0]    self.last = names[1]}*///MARK: - 只读的计算属性//只有get部分,没有set部分的计算属性称之为只读的计算属性,而且只读计算属性定义部分甚至可以省略get关键字和花括号class Cat{    var first: String = ""    var last: String = ""    //定义只读计算属性,只有get部分(省略了)    var fullName: String    {        return first + "-" + last    }    init(first: String, last: String)    {        self.first = first        self.last = last    }}let name = User(first: "孙", last: "权")print(name.fullName)//只读计算属性不能被赋值,程序只能获取只读计算属性的值

0 0