美文网首页
一个整数的诞生

一个整数的诞生

作者: JackZou | 来源:发表于2017-11-21 17:08 被阅读0次

    现在一切都清楚了:一个那天早些时候去过思里博尔的人;一个熟悉艾克罗伊德并知道他买了一台口述录音机的人;一个懂得机械原理的人;一个有机会在弗洛拉小姐到来前从银柜拿走剑的人;一个拿着装得下口述录音机的容器(比如一只黑包)的人;一个在帕克给警察打电话时能单独在书房里呆几分钟的人。事实上这个人就是——谢泼德医生!

    —— 赫尔克里·波洛

    1. Swift的协议

    作为一门面向协议的语言,Swift通过协议、或者说protocol,来表达特定的概念。比如Equatable protocol表达的概念就是可比较相等性Comparable protocol表达的概念就是不仅可以比较相等性,还可以比较顺序性(因为Comparable继承于Equatable)。

    Swift的protocol有两个超赞的特性:

    1. protocol是可以继承的,这使protocol有了面向对象的特性,有利于复杂系统的设计。

    2. protocol中的方法或属性可以有默认的实现,这是protocol真正的威力所在。比如你有一个类,你打算让这个类遵从collection协议,你所要做的就是实现七个必须的方法,然后你就可以使用collection协议中定义的上百个方法了,因为那些方法全部通过这七个方法实现。

    但是,Swift 4.0标准库中定义了超过60个协议,这些协议相互继承,而且每个协议被多个类型遵守,每个类型又遵守多个协议,可以说是一团乱麻,让每一个想深入了解Swift标准库的人望而生畏。

    在这系列文章中,我将带领大家穿越迷雾,深入探究Swift标准库的源代码,看看Swift是怎样在一团乱麻的协议族之上建立起一个复杂完备的类型系统的。

    我们从最平凡的类型:Int32说起。

    2. 一个Int32的诞生

    Int32是什么?“一个32位有符号整数类型”。这个回答很正确,却没什么实际价值,因为我们还是不知道能用Int32干什么。想知道Int32能干啥,就得看看Int32是怎样定义的。下面这张图是我根据Int32的定义生成的:

    Int32_hierarchy.png

    可以看到,即使是Int32这样一个平凡类型,也实现了相当多的协议,表达了复杂的概念。

    Int32到底表达了什么样的概念,我们下回接着说。

    下一篇:Equatable和Comparable

    相关文章

      网友评论

          本文标题:一个整数的诞生

          本文链接:https://www.haomeiwen.com/subject/kbmwvxtx.html