//// 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)//只读计算属性不能被赋值,程序只能获取只读计算属性的值总结
以上是内存溢出为你收集整理的Swift计算属性全部内容,希望文章能够帮你解决Swift计算属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)