The Swift Programming Language4

来源:互联网 发布:12306订票软件 编辑:程序博客网 时间:2024/06/10 07:52

整型(Integers)

整型的全部都是数字而没有小数,例如42,-23,整型分有符号的(正数,零,负数)和无符号的(正数或者零)

 

Swift 提供基于8,16,32,64位的有符号和无符号的整型数。 这些整型遵行C语言的命名习惯,例如,一个8位的无符号整型使用UInt8,32位有符号的整型使用Int32,像Swift的所有数据类型一样,这些整型都是首字母大写。

 

整型边界(Integer Bounds)

 

我们能够访问每个整型类型的对小值和最大值,使用他们的min和max属性,如下:

let minValue = UInt8.min // minValue is equal to0,and is of type UInt8

let maxValue = UInt8.max // maxValue is equal to255,and is of type UInt8

 

这些属性的值具有对应的数据类型的大小(就像上面的UInt8的值),因此能够用在需要相应的数据类型的地方

 

整型(Int)

通常情况下,在我们的代码中不需要指定整型的大小,Swift提供了另外的一个整型类型Int,它的大小等于当前平台的一个字的大小(word size)

 

在32位的平台下,Int 大小就等同于Int32.

在64位的平台下,Int大小就等同于Int64

除非真的需要指定整型的大小。否则需要用整型的时候还是尽量使用Int,这增加了代码的一致性和兼容性。此外即使在32位平台,Int 能够存储在

-2,147,483,648到2,147,483,647之间的数字,对于大多数的整型数据的使用已经是很大了。

 

无符号整型(UInt)

 

Swift 也提供了一个无符号的整型类型UInt ,它的大小等于当前平台的一个字的大小(word size),如下

 

在32位平台下,UInt大小就等同于UInt32

在64位平台下,UInt大小就等同于UInt64

 

注意

仅仅当真的需要使用 具有当前平台字大小的无符号整型的时候才去使用UInt,否则即使知道被存储的值是非负的数值还是建议使用Int,一致性地使用Int用于整型避免了代码的转换操作,整型的数据类型(//猜测数据类型UInt32,UInt64等)猜测。详细表述在Type Safety and Type Inference

 

浮点数(Floating-Point Numbers)

 

 浮点数是包含有小数的数值,例如3.12159,0.1,-273.15

浮点数能够用来表示比整型范围大的数值。存储的值可以比Int的值更小,或者更大,Swift提供了两种有符号的浮点数类型

 

Double 代表64位的浮点数,当浮点数很大或者精度要求非常高时使用Double。

Float 代表32位的浮点数。当精度要求不到64位精度时使用Float

 

注意

Double 有至少15位十进制数的精度,而Float有至少6位十进制数的精度,根据数值范围和现实的需要,在程序代码中选择合适的浮点数值。

 

数据类型的安全和推测(Type Safety and TypeInference)

Swift 是个数据类型安全的编程语言,类型安全使我们非常清楚我们代码所使用的数据的类型。如果我们的代码希望字符串,那么就不能错误的传入整型。

 

由于Swift是类型安全的,所以当编译代码的时候,编译器会检查代码并标记任何不匹配类型位错误。这就使我们在开发阶段能尽可能早地发现错误并修改错误。

 

当我们在使用了不正确的数据类型时类型检查能使我们避免了错误。然而这并不是说我们必须指定每个常量或者变量的数据类型。如果不指定数据类型的话,Swift使用类型推断(type inference)得出合适的数据类型,类型推断让编译器在编译时自动地推断特定的表达式的类。仅仅通过检查所给的数据的值。

 

因为类型推测,Swift需要比C,OC或其他语言更少的数据类型的显式声明,因为指定数据类型的工作已经被做了。

 

当用初始值声明一个常量或者变量时,类型推测是非常有用的。通常情况下是在声明一个常量或者变量时,把一个语意的值(literal value)赋给它 。(语意的值是在代码中直接出现的值,例如42或3.14159)。 如果你给一个新的常量赋值42而又没有说明它是什么类型,那么Swift会推测你想给这个变量赋值一个整型,因为你初始化这个变量时给的数值看起来像一个整型,如下:

let meaningOfLife = 42

//meaningOfLife is inferred to be of type Int

 

相似地,如果你不指定浮点语意的数据类型,Swift推测你想创建一个Double,如下:

let pi = 3.14159

//pi is inferred to be of type Double

Swift 总是选择Doule(而不是Float),当推测一个浮点型时

 

当表达式包含整型和浮点型时,Swift把表达式的结果推测为Double型,如下:

let anotherPi = 3 + 0.14159

// anotherPi is also inferred to be of type Double

上面数值3语意没有显式的类型,由于另一部分出现浮点型,所以表达式的最终数据类型被推测为Double,

 

0 0
原创粉丝点击