zoukankan      html  css  js  c++  java
  • Swift4.0复习类型定义、类型投射等操作

    1.类型定义:

    /// 这里将MyInt定义为Int32类型
    typealias MyInt = Int32
     
    /// 这里将MyArrayInt定义为[MyInt]数组类型
    typealias MyArrayInt = [MyInt]

    2.元类型:

    “元类型(metatype)是指可引用某个类型的类型对象的类型。”
    
    摘录来自: “大话Swift 4.0”。 iBooks. 
    let a = 10.self
     
    // 输出:a = 10
    print("a = (a)")
     
    let tuple = (10, 0.5, "abc").self
     
    // 输出:tupe = (10, 0.5, "abc")
    print("tupe = (tuple)")
     
    func foo() {
        print("Foo...")
    }
     
    // 这里直接输出:Foo...
    foo.self()

    3.类型获取:

    let mc: Prot = MyClass()
     
    // 这里通过type(of:)函数来获取mc对象的元类型实体,
    // type(of: mc)所返回的类型就是MyClass.Type
    typeFetch(t: type(of: mc))

    4.Any和AnyObject:

    “Swift编程语言中提供了两个根类型,
    一个是 Any,它可用于指向Swift中的任一类型,
    包括函数类型与元组类型;
    还有一个是 AnyObject,它其实是一个协议类型,用于指向Swift中的任一类类型的对象引用。
    引入 AnyObject 的主要目的还是为了能与Objective-C进行方便对接。” 摘录来自: “大话Swift 4.0”。 iBooks.
    struct MyStruct { }
     
    class MyClass { }
     
    func foo() { }
     
    // 声明Any类型的对象obj
    var obj: Any
     
    // obj指向MyStruct结构体的对象实例
    obj = MyStruct()
     
    // obj指向MyClass类的对象实例
    obj = MyClass()
     
    // obj指向一个(Int, Double, String)元组对象
    obj = (1, 2.0, "abc")
     
    print("obj = (obj)")
     
    // obj指向函数foo的引用
    obj = foo
     
    // 这里定义了AnyObject类型的对象引用cls
    // 并将它指向MyClass对象实例
    let cls: AnyObject = MyClass()

    5.类型投射:

    “在Swift编程语言中提供了两种类型投射操作符,分别为 as! 与 as?。
    由于向下投影操作可能会失败,所以一般情况下我们可以使用 as? 进行操作,它返回一个Optional对象,
    如果投射失败,则会返回空值 nil。
    如果我们能确保当前对象能被安全投射到我们所指定的类型,那么可以使用 as!
    该操作符直接返回类型投射之后的对象,不过如果万一投射失败,则运行时就会发生异常崩溃。” 摘录来自: “大话Swift
    4.0”。 iBooks.

    6.类型检查:

    if obj is Child {
        print("This is Child")
    }

    7.嵌套类型:

    “嵌套类型中可访问外部类型中的私有成员,但外部类型则不可访问其嵌套类型的私有成员。”
    
    摘录来自: “大话Swift 4.0”。 iBooks. 
  • 相关阅读:
    Win10 主题 美化 动漫
    Win10 主题 美化 动漫
    span 居中
    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
    10 Future Web Trends 十大未来互联网趋势
    10 Future Web Trends 十大未来互联网趋势
    使用pycharm进行简单的数据库管理
    使用pycharm进行简单的数据库管理
    Python开发利器PyCharm 2.7附注册码
    Python开发利器PyCharm 2.7附注册码
  • 原文地址:https://www.cnblogs.com/pengsi/p/8513115.html
Copyright © 2011-2022 走看看