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(" ... ")
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。