Int,String等被认为是Swift中的“原始”?

前端之家收集整理的这篇文章主要介绍了Int,String等被认为是Swift中的“原始”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
表示使用 swift中的结构实现的数字,字符和字符串的类型.

摘自official documentation

Data types that are normally considered basic or primitive in other
languages—such as types that represent numbers,characters,and
strings—are actually named types,defined and implemented in the Swift
standard library using structures.

这是否意味着如下:

Int
Float
String
// etc

…不被认为是原始的?

是和否…

正如其他答案所指出的,在Swift中,在其他语言中被认为是“原始”的东西与标准库中的其他结构类型或您可以创建的值类型之间的语言层面上没有差别.例如,它不像Java,int和Integer之间有很大的区别,并且不可能创建自己的类似于前者语义的类型.在Swift中,所有类型都是“非原始”或“用户级”:定义语法和语义的语言功能,例如Int与定义CGRect或UIScrollView或您自己的类型的语言功能没有区别.

然而,仍然有区别. cpu具有本机指令,例如添加整数,乘以浮点数,甚至采用向量交叉积,但不包括插入直方图或搜索列表.人们谈论的一个事情,当他们以“原始”的方式命名一些语言的类型时,那些是编译器提供钩子到底层cpu架构的类型,所以你用这些类型的东西直接映射到基本的cpu说明. (也就是说,所以像“添加两个整数”这样的操作不会陷入对象查找和函数调用中.)

Swift仍然有这样的区别 – 像Int和Float这样的标准库类型是特别的,它们映射到基本的cpu操作. (在Swift中,编译器不提供任何其他方式直接访问这些操作.)

与许多其他语言的区别在于,对于Swift来说,“原始”类型之间的区别是否是标准库的实现细节,而不是语言的“功能”.

只是在这个问题上更多的一些…

当人们谈论字符串是许多语言中的“原始”类型时,这是一个不同的含义 – 字符串是一个比整数和浮点更远离cpu的抽象级别.

在其他语言中是“原始”的字符串通常意味着像C或Java这样的东西:编译器有一种特殊情况,它将引用的内容放入引用程序中会导致一些数据被内置到程序二进制文件中,而在代码中写入的地方获取指向该数据的指针,可能包含在某种对象接口中,以便您可以使用它进行有用的文本处理. (也就是字符串字面值.)也许编译器也有特殊情况,以便您可以为这些文本处理过程中的一些文本处理过程提供方便的快捷方式,如连接.

在Swift中,String是“原始”,因为它是标准库中所有与文本相关的函数使用的标准字符串类型.但是没有编译器魔法让你无法使用自己的字符串类型,可以用文字创建或用操作符处理.因此,Swift中的“原始”和用户类型之间的差异更小.

猜你在找的Swift相关文章