前端之家收集整理的这篇文章主要介绍了
Swift计算属性,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//
// main.swift
// Swift计算属性
//
// Created by Goddog on 15/7/20.
// Copyright © 2015年 Goddog. All rights reserved.
//
import Foundation
print("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.Spring
print(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)
//只读计算属性不能被赋值,程序只能获取只读计算属性的值