Swift类型安全和类型推测
Swift是一个类型安全的编程语言。这鼓励你在代码中明确数值的类型。如果你代码中需要用到String,那么你不能错误的将Int传递进去。
因为Swift是类型安全的,所以它会再编译的时候对类型进行检查,任何错误和不匹配都会报错。这会使得你再研发的时候尽可能早得发现和修正问题。
类型检查能够帮助你在使用不同类型值的过程中避免错误,但是,这并不意味着你必须指定每一个你声明的变量或者常量类型。如果你没有指定变量或者常量类型,Swift会推测出恰当的数据类型。类型推测使得编译器在编译代码的时候简单的通过查看你提供的数值来自动推测出相应的数据类型。
因为类型推测,相比C和Objective-C来说Swift对类型声明需求就非常少了,变量和常量类型仍然是非常明确指定的,但是更多的工作已经为你完成了。
类型推测在你声明变量或者常量并同时赋值的时候特别有用。这通过在声明的时候对变量或者常量赋予字面值来完成。(字面值的意思就是在下面例子中直接出现在源代码中得数值,比如42和3.14159)
例如,如果你再声明一个常量的时候,将42赋给该常量,那么Swift则会推测出该常量的类型为Int, 因为你初始化常量的值看起来像是一个整数。
如果你再表达式中混合浮点数值和整数值,那么Double会做为推测的结果。
因为Swift是类型安全的,所以它会再编译的时候对类型进行检查,任何错误和不匹配都会报错。这会使得你再研发的时候尽可能早得发现和修正问题。
类型检查能够帮助你在使用不同类型值的过程中避免错误,但是,这并不意味着你必须指定每一个你声明的变量或者常量类型。如果你没有指定变量或者常量类型,Swift会推测出恰当的数据类型。类型推测使得编译器在编译代码的时候简单的通过查看你提供的数值来自动推测出相应的数据类型。
因为类型推测,相比C和Objective-C来说Swift对类型声明需求就非常少了,变量和常量类型仍然是非常明确指定的,但是更多的工作已经为你完成了。
类型推测在你声明变量或者常量并同时赋值的时候特别有用。这通过在声明的时候对变量或者常量赋予字面值来完成。(字面值的意思就是在下面例子中直接出现在源代码中得数值,比如42和3.14159)
例如,如果你再声明一个常量的时候,将42赋给该常量,那么Swift则会推测出该常量的类型为Int, 因为你初始化常量的值看起来像是一个整数。
let meaning0fLife = 42 // meaning0fLife is inferred to be of type Int同样的,如果你不指定浮点字面值的类型,Swift会推测出你想创建Double类型:
let pi = 3.14159 // pi is inferred to be of type Double当推测浮点数值的时候,Swift一直会选择Double而非Float。
如果你再表达式中混合浮点数值和整数值,那么Double会做为推测的结果。
let anotherPi = 3 + 0.14159 // anotherPi is also inferred to be of type Double表达式中得3没有任何明确的类型,因此选择Double是源于加法中浮点字面值的出现。