【Swift4.0】类型安全和类型推断

jackyan 发布于 2018年01月03日
无人欣赏。

Swift 是一门类型安全的语言。鼓励程序员在代码中清楚明确值的类型。如果代码中使用一个字符串String,那么你不能错误的传递一个整型Int给它。因为Swift是类型安全的,它会在代码编译的时候做类型检查,并且把所有不匹配的类型作为一个错误标记出来。这样使得程序员在开发中尽可能早地发现和修正错误。

类型检查有助于你在使用不同类型值的时候,避免错误的发生。但是,这不意味着你必须给每一个声明的常量和变量指定具体的类型。如果你没有给一个值指定你所需要的类型,Swift会使用类型推断来推算出一个合适的类型。类型推断使得编译器在代码编译的时候,通过简单的检测提供的值,能够自动推断出类型。因为有类型推断,Swift相比C或者Objective-C语言,很少需要声明类型。在使用中,变量和常量的类型一直是明确的,但是指定它们类型的大部分工作已经在编译的时候为您完成了。

当你在声明一个带有初始化值的变量或者常量的时候,类型推断特别有用。在声明一个常量或者变量的时候,同时传递一个初始化值给它。比如,当没有指定一个常量是什么类型的时候,赋值42给它。因为你用一个整型的数值来初始化它,所以Swift会推断你需要该常量为一个整型。

let meaningOfLife = 42

类似,如果你没有为一个浮点值指定类型,Swift会推断你想生成一个Double 类型:

let pi = 3.14159

Swift总是会选择Double(而不是Float)作为浮点数的推断类型。如果在一个表达式中把整数和浮点数相加,那么Double将会是作为一个推断类型:

let anotherPi = 3 + 0.14159

类型别名

类型别名是使用 typealias 关键字为一个已经存在的类型定义了一个可替换的名字。

typealias AudioSample = UInt16

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

var maxAmplitudeFound = AudioSample.min

这里 AudioSample 被定义为UInt16的一个别名。因为它是别名,所以AudioSample.min实际上是调用UInt16.min。

暂无回复
登录 或者 注册