zoukankan      html  css  js  c++  java
  • Option可选值可选值(二)

    //: Playground - noun: a place where people can play


    import Cocoa


    var str1 = "供选链接和强制拆包的不同。

    "

    class Person {

        var residence: Residence?//供选连接

    }

    class Residence {

        var rooms = [Room]()

        var numberOfRooms: Int {

            return rooms.count

        }

        subscript(i: Int) -> Room {

            return rooms[i]

        }

        

        func printNumberOfRooms() {

            println("The number of rooms is (numberOfRooms)")

        }

        

        var address: Address?

    }

    //假设你创建一个新的 Person 实例,它的 residence 属性因为是被定义为供选的,此属性将默认初始化为空:

    //let john = Person()

    /*

    假设你想使用声明符!强制拆包获得这个人 residence 属性 numberOfRooms 属性值,将会引发执行时错误,由于这时没有能够供拆包的 residence 值。

    */

    //let roomCount = john.residence!.numberOfRooms

    //供选链接提供了一种还有一种获得 numberOfRooms 的方法。利用供选链接,使用问号来取代原来!的位置:

    //let roomCount = john.residence?

    .numberOfRooms

    /*

    if let roomCount = john.residence?.numberOfRooms {

        println("john's residence has (roomCount) room(s).")

    } else {

        println("Unable to retrieve the of rooms.")

    }


    john.residence = Residence()

    if let roomCount = john.residence?

    .numberOfRooms {

        println("john's residence has (roomCount) room(s).")

    } else {

        println("Unable to retrieve the of rooms.")

    }*/

    /*

    为供选链接定义模型类

    这些类是由上面的 Person Residence 模型通过加入一个 Room 和一个 Address 类拓展来。

    */

    class Room {

        let name: String

        init(name: String) {

            self.name = name

        }

    }

    class Address {

        var buildingName: String?

        var buildingNubmer: String?

        var street: String?

        

        func buildingIdentifier() -> String? {

            if (buildingName != nil) {

                return buildingName

            } else if (buildingNubmer != nil) {

                return buildingNubmer

            } else {

                return nil

            }

        }

    }

    //通过供选链接调用属性

    let john = Person()

    if let roomCount = john.residence?.numberOfRooms {

        println("John's residence has (roomCount) room(s).")

    } else {

        println("Unable to retrieve the number of rooms.")

    }

    //通过供选链接调用方法

    var uu = 9

    if(john.residence?.printNumberOfRooms() != nil) {

        println("It was possible to print the number of rooms.")

    } else {

        println("It was not possible to print the number of rooms.")

    }

    //使用供选链接调用角标

    if let firstRoomName = john.residence?[0].name {

        println("The first room name is (firstRoomName).")

    } else {

        println("Unable to retrieve the first room name.")

    }




























  • 相关阅读:
    Android 六种核心安全机制
    Android 网络通信 HTTP
    Android Thread和AsyncTask
    C#(少用的)
    Asp.net动态生成表单
    设计模式--职责链(学习)
    Extjs表单验证小结
    C#框架
    Javascript获取IFrame内容(兼容IE&FF)
    最近在忙淘宝店的事
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7228032.html
Copyright © 2011-2022 走看看