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

一个整数的诞生

作者: 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

相关文章

  • 一个整数的诞生

    现在一切都清楚了:一个那天早些时候去过思里博尔的人;一个熟悉艾克罗伊德并知道他买了一台口述录音机的人;一个懂得机械...

  • Equatable和Comparable

    上一篇:一个整数的诞生 Equatable和Comparable 上次我们谈了Swift标准库是如何通过一系列pr...

  • 余数

    整数正整数,负整数,0统称为整数 同余定理给定一个正整数m,两个整数x,y,如果满足(x-y)除以m等于一个整数,...

  • 【python迅雷】整数反转?

    题目:输入一个有符号整数,输出该整数的反转值。 输入描述: 一个整数 输出描述: 一个整数 code: INT =...

  • 算法---判断整数是否是回文整数

    判断一个整数是否是回文整数

  • 每日3题(2)- 找出数组中的幸运数

    题目: 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。 给你一个整数数组 ...

  • leecode刷题(12)-- 整数反转

    leecode刷题(12)-- 整数反转 整数反转 描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位...

  • IOS 算法(基础篇) ----- 找出数组中的幸运数

    在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,请...

  • LeetCode 1394. 找出数组中的幸运数

    题目 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。 给你一个整数数组 a...

  • 输出第二个整数(1.3)

    输出第二个整数 【题目描述】输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。...

网友评论

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

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