• Swift语言精要


    1. Stored Property

    eg:

    var number: Int = 0

    2. Computed Property

    eg:

    var area : Double {
      get {
        return width * height
      }

         ...

    }

    完整代码如下:

    class Rectangle {
        var  Double = 0.0
        var height: Double = 0.0
        var area : Double {
            // computed getter
            get {
                return width * height
            }
            // computed setter
            set {
                // Assume equal dimensions (i.e., a square)
                width = sqrt(newValue)
                height = sqrt(newValue)
            }
        }
    }

    测试代码:

    var rect = Rectangle()
    rect.width = 3.0
    rect.height = 4.5
    rect.area // = 13.5
    rect.area = 9 // width & height now both 3.0

    3. Property Observer(属性观察者)

    class PropertyObserverExample {
        var number : Int = 0 {
            willSet(newNumber) {
                println("About to change to (newNumber)")
            }
            didSet(oldNumber) {
                println("Just changed from (oldNumber) to (self.number)!")
            }
        }
    }

    测试代码如下:

    var observer = PropertyObserverExample()
    observer.number = 4
    // prints "About to change to 4", then "Just changed from 0 to 4!"

    4. Lazy Property(属性迟绑定)

    class SomeExpensiveClass {
        init(id : Int) {
            println("Expensive class (id) created!")
        }
    }
    
    class LazyPropertyExample {
        var expensiveClass1 = SomeExpensiveClass(id: 1)
        lazy var expensiveClass2 = SomeExpensiveClass(id: 2)    
        init() {
            println("First class created!")
        }
    }

    测试代码如下:

    var lazyExample = LazyPropertyExample()
    // prints "Expensive class 1 created", then "First class created!"
    lazyExample.expensiveClass1 // prints nothing, it's already created
    lazyExample.expensiveClass2 // prints "Expensive class 2 created!"
  • 相关阅读:
    .net remoting学习(2)MarshalByRefObject与对象激活
    Android之旅Service
    Android之旅Handler与多线程
    Android之旅广播(BroadCast)
    .net remoting学习(3) 配置与服务端广播
    网址收藏
    Asp.net生命周期
    Android API 拦截系统短消息
    TCL脚本语言学习
    实现一个包含Microsoft.Advertising和SmartMad广告控件的UserControl
  • 原文地址:https://www.cnblogs.com/davidgu/p/5346042.html
Copyright © 2020-2023  润新知