zoukankan      html  css  js  c++  java
  • Swift语言之类型方法

    Swift语言有很多特性,其中之一就是类型方法,相对于其他比较流行的编程语言(C#、Java),在Swift中类型方法最大的特征在于它的可继承性,我们举个例子说明:

    俗话说,龙生龙凤生凤老鼠生儿会打洞;虽说龙和鼠都属于动物,但毕竟不是同类,所以生出来的当然不一样。

    同理,对于Dragon和Mouse两个类而言,它们的newInstance类型方法返回的结果应该是各自类的实例;

    我们先创建一个名为Animal的协议:

    protocol Animal {
        class func newInstance() -> Animal
    }

    这个协议很简单,要求所有实现它的类都应该定义newInstance方法:

    class Dragon : Animal, Printable {
        class func newInstance() -> Animal {
            return Dragon()
        }
        
        let description = "Dragon"
    }
    
    class Mouse : Animal, Printable {
        class func newInstance() -> Animal {
            return Mouse()
        }
        
        let description = "Mouse"
    }

    我随后定义了两个实现Animal协议的类,这里同时实现了Printable协议纯粹是为了打印方便;

    同时,我定义了一个范型的方法用于调用newInstance方法:

    func printAnimal<T: Animal>(type: T.Type){
        println(type.newInstance())
    }

    执行下面语句:

    printAnimal(Dragon.self)
    printAnimal(Mouse.self)

    结果是:

    Dragon

    Mouse

  • 相关阅读:
    book pile SGU
    Inversions SGU
    蒟蒻LQL的博客
    控制台注入DLL代码
    Windows消息类型
    windows编程中的数据类型
    单链表的创建与遍历
    定义函数指针
    启动外部程序
    dll共享段中一些需要注意的问题
  • 原文地址:https://www.cnblogs.com/cdutedu/p/4352213.html
Copyright © 2011-2022 走看看