博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
元类型与类型的区别
阅读量:6250 次
发布时间:2019-06-22

本文共 1786 字,大约阅读时间需要 5 分钟。

元类型是指所有类型的类型。

元类型只能类型出现在类型标示位;

类型即能作为类型存在,出现在类型标示位;

也能作为变量存在,出现在元类型的变量位。

 

http://www.swift51.com/swift2.0/chapter3/03_Types.html#type_inheritance_clause

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/swift/grammar/metatype-type

A metatype type refers to the type of any type, including class types, structure types, enumeration types, and protocol types.

The metatype of a class, structure, or enumeration type is the name of that type followed by .Type. The metatype of a protocol type—not the concrete type that conforms to the protocol at runtime—is the name of that protocol followed by .Protocol. For example, the metatype of the class type SomeClass is SomeClass.Type and the metatype of the protocol SomeProtocol is SomeProtocol.Protocol.

You can use the postfix self expression to access a type as a value. For example, SomeClass.self returns SomeClass itself, not an instance of SomeClass. And SomeProtocol.self returns SomeProtocol itself, not an instance of a type that conforms to SomeProtocol at runtime. You can call the type(of:) function with an instance of a type to access that instance’s dynamic, runtime type as a value, as the following example shows:

元类型

元类型是指所有类型的类型,包括类、结构体、枚举和协议。

类、结构体或枚举类型的元类型是相应的类型名紧跟.Type。协议类型的元类型——并不是运行时遵循该协议的具体类型——是该协议名字紧跟.Protocol。比如,类SomeClass的元类型就是SomeClass.Type,协议SomeProtocol的元类型就是SomeProtocal.Protocol

你可以使用后缀self表达式来获取类型。比如,SomeClass.self返回SomeClass本身,而不是SomeClass的一个实例。同样,SomeProtocol.self返回SomeProtocol本身,而不是运行时遵循SomeProtocol的某个类型的实例。还可以对类型的实例使用dynamicType表达式来获取该实例在运行阶段的类型,如下所示:

 

可以使用恒等运算符(===和 !==)来测试一个实例的运行时类型和它的编译时类型是否一致。

 

可以使用初始化表达式从某个类型的元类型构造出一个该类型的实例。对于类实例,必须使用 required关键字标记被调用的构造器,或者使用 final 关键字标记整个类。

 

元(Metatype)类型语法

元类型 →  . Type |  . Protocol

转载地址:http://kmria.baihongyu.com/

你可能感兴趣的文章
软件开发中团队的重要性
查看>>
Windows下使用GTK接口gdk_pixbuf_new_from_file加载图片失败
查看>>
记录一个MySQL的复杂的更新SQL
查看>>
kmp算法实现
查看>>
vs2012 输出窗口报错 “无法查找或打开 PDB 文件”
查看>>
关于卷一中DR/BDR选举过程解释
查看>>
三分技术,七分管理
查看>>
考题:为什么 Shell 脚本自动把字符串 10001 当成二进制,输出 17?
查看>>
Java的finally语句不会被执行的唯一情况
查看>>
UITableView 基本使用[二] 基本属性
查看>>
mysqldump 常用参数
查看>>
理解tomcat之搭建简易http服务器
查看>>
Storm Spark Scala 混合代码快速编译打包jar方式,然后java风格使用(朋友咨询)
查看>>
设置Static 文本字体方法
查看>>
Java并发之AQS详解
查看>>
TI OMAP MUX configure
查看>>
Intellij IDEA神器常用技巧八-2018版本新增快捷键
查看>>
做销售,必须“封杀”的七种心理
查看>>
Uber基于RNN的极端事件预测,解决交通问题
查看>>
elasticsearch5.3安装插件head
查看>>