第四节 类型的安全检查,类型推断和类型别名

本文来自于疯子们的开源图书


Swift是一种类型安全的语言。类型安全的语言鼓励你要清楚的知道,代码中正在使用的那些值的类型。如果你的代码想要一个字符串类型,你就不能错误的传一个Int类型给它。

因为Swift是类型安全的,在编译你的代码的时候,它会执行类型检查,并且把任何一个不匹配的类型当作错误标记出来。这使你在开发过程中能够尽早的捕获并且修改错误。

当你使用不同类型的值的时候,类型检查能够帮助你避免错误。然而,这并不代表你必须要指定每个你声明的常量和变量的类型。如果你不指定你需要的值的类型, Swift使用类型推断来算出合适的类型。当编译器在编译代码的时候,只要通过检查你提供的值,类型推断能使它自动推断出一个特殊表达式的类型,

因为有了类型推断的缘故,Swift要比C和Objective-C少很多的类型声明。常量和变量仍然是类型明确的,不过指定它们的类型的工作已经为你做好了。

当你用一个初始值来声明常量和变量时,类型推断是非常有用的。这通常是在声明常量或变量的时候,指定一个文字值(literal)来办到的.(文字值是指直接出现在你的代码的值,比如上面例子中的42和3.14159)。

例如你分配一个42的文字值给一个新的没有说明类型的常量,Swift推断你想要这个常量是Int类型,因为你已经用一个看起来像一个整数的数字初始化它了:

同样的,如果你没有为一个浮点数字指定类型,Swift就推断你想要创建一个Double类型:

Swift在推断浮点数字的类型的时候,总是选择Double类型(而不是Float类型)。

如果你在一个表达式中把整数文字和浮点文字混在一起,从上下文当中会被推断为Double类型。

文字值3本身没有明确的类型,所以从加法当中出现了浮点文字,推断出类型为Double还是比较恰当的。

 

类型别名

类型别名为现存类型定义另外一个可选的名字,用关键词typealias来定义类型别名。

当你想要使用一个更加适合于上下文的名字来称呼一个已存在类型的时候,类型别名是非常有用的,比如处理一个外部传输过来的特定大小的数据时:

一旦定义了一个类型别名,你可以在任何可以使用原来名称的地方,使用别名:

这里,AudioSample被定义为UInt16的别名。因为它是一个别名,调用AudioSmaple.min实际上就是调用UInt16.min,它提供一个初始值0给maxAmplitudeFound.

 

 


你可能感兴趣的:(swift)