swift是强类型语言

 

  1. 所有的变量必须先声明,后使用;
  2. 指定类型的变量只能接收类型与之匹配的值。

 

强类型:变量的类型明确,变量的赋值必须符合类型约束;变量的类型转化必须显式进行。

 

强类型:类型规则的制定与检查;

动态类型:变量的具体类型由值类型确定,它的行为也由值类型确定;

 

动态类型、静态类型:强调类型的绑定;

 

相对于oc的kindof,允许类型的继承转换;

 

所有的类型转化都必须显式强制进行

Swift是强类型语言,但也允许开发者通过is、as?和as!这三种操作来对类型进行判断和强制转换。其中is用作类型判断,而as?和as!则分别是类型转换的可选形式和强制形式。在这里强调一下,swift中比较常用的向下转换(downcast)是没有as操作符的。

 

OC语言是一门强类型的语言。

强类型包含两方面的含义:

  1. 所有的变量必须先声明,后使用;
  2. 指定类型的变量只能接收类型与之匹配的值。

强类型的语言可以在编译过程中发现源代码的错误,从而保证程序更加健壮。

 

 

“再来看看静态类型语言的好处:由于在运行之前进行了类型检查,一方面代码的可靠性增强,符合‘发现错误要尽早’的原则;另一方面编译器有可能藉此优化机器代码以提高运行效率,同时相比前者节省了运行期的耗费在类型检查上的时间和空间。此外,变量类型的声明彰显了编程者的意图,有辅助文档的功效。”冒号有条有理地解释着,“两种类型的体制可以用两种法律原则来类比:静态类型检查类似疑罪从有的有罪推定制——在被证明合法之前是非法的,动态类型检查类似疑罪从无的无罪推定制——在被证明非法之前是合法的。至于如何取舍,套用一句话:‘Static Typing Where Possible, Dynamic Typing When Needed’。不妨理解为:尽可能守规则,必要时求变通。”

 

与此相对地,强类型语言(strongly-typed language)着意贯彻类型控制,为保障数据的完整性和代码的安全有效性,一般不允许隐性类型转换[6]。如果一定需要类型转换,必须是显性转换,一般通过我们熟知的铸型(cast)来完成。”