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

  • 相关阅读:
    HTML--1标签表格
    HTML--4格式布局
    HTML--3css样式表
    快速制作网页的方法
    表单
    表单练习——邮箱注册
    斐波那契数列
    0125 多线程 继承Thread 练习
    Hash(哈希)
    [COI2007] [luogu P1823] Patrik 音乐会的等待 解题报告 (单调栈)
  • 原文地址:https://www.cnblogs.com/cdutedu/p/4352213.html
Copyright © 2011-2022 走看看