Structs 和 Classes
两者非常类似都有 方法 属性 初始化函数 扩展 extension 协议 proctocol。
区别是class对象是引用类型,struct 是值类型类似 Int Float 等
struts 没有继承 不能类型转换 没有析构函数 主要用户封装值
例子
struct Address { var street: String var city: String static var defaultStreet = "Xinghu street 1111" // struct level func isValid() -> Bool { if city == "suzhou"{ return true }else{ return false } } //修改成员变量函数 必须加关键字 mutating mutating func resetStreet(){ street = Address.defaultStreet } } var address = Address(street: "xinghujie",city: "suzhou") address.isValid() Address.defaultStreet
属性
通过var or let来定义变量or常量属性 对开销大的属性值 可以通过 lazy 关键字来修饰
计算属性
//不存储数据 var area : Float { get { return x*y } set(newArea) { x=newArea/y } }
属性 观察 property observer
var userName = "" { willSet(newName){ ... } didSet{ .... } }
例子
class Aman { var name = "" var strength = 20 var intelligence = 10 //延迟 属性 lazy var inventory: Int = self.importInventory() func importInventory () -> Int { return 100 } //计算属性 var dexterity : Int { get { return (strength+intelligence) /2 } set (newDextirity){ strength = dextirity/2 intelligence = Int(dextirity*1.5) } } //属性观察 var health = 100 { willSet { } didSet{ println(" ... ") } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。