前端之家收集整理的这篇文章主要介绍了
Swift存储属性,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//
// main.swift
// Swift存储属性
//
// Created by Goddog on 15/7/19.
// Copyright © 2015年 Goddog. All rights reserved.
//
import Foundation
print("存储属性是指存储在类、结构体里的变量或常量,可分为实例存储属性和类型存储属性,实例存储属性属于单个实例,类型存储属性属于类型本身")
print("枚举不能定义实例存储属性,只有类和结构体才能定义实例存储属性;")
print("上一节中结构体Size可以不指定初始值但是要声明为可选类型")
struct Size {
var width: Int!
var height: Int!
}
var s1 = Size()
var s2 = Size(width: 10,height: 20)
//MARK: - 实例存储属性与实例变量
//实例存储属性用于保存该类型的实例的状态数据
struct FixedLength
{
var start: Int
let length: Int //定义常量存储属性,可以不指定初始值
}
var rg = FixedLength(start: 2,length: 8)
print("开始:\(rg.start),长度:\(rg.length)")
rg.start = 1 //变量可以重新赋值
//rg.length = 10 //常量不可重新赋值
//MARK: - 结构体常量与实例属性
struct Range
{
//定义两个变量存储属性
var start: Int
var length: Int
}
let rge = Range(start: 1,length: 2)
print("起点:\(rge.start),终点:\(rge.length)")
//rge.start = 3 //用let声明的rge实例是不可变的
//rge.length = 4
//MARK: - 延迟存储属性
//延迟存储属性指的是第一次被调用时候才会被计算初始值的属性,用lazy修饰符
class Dept
{
var id: Int
var info: String
init(id: Int)
{
self.id = id
//暂停2s
NSThread.sleepForTimeInterval(2)
self.info = "读取数据库"
}
}
class User {
var id: Int = 0
lazy var dept = Dept(id: 10) //延迟加载机制
var nicks = [String]() //数组
}
//创建user实例
var user = User()
user.nicks.append("曹操")
user.nicks.append("刘备")
user.nicks.append("孙权")
print(user.nicks)