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)来完成。”

最新文章

  1. [原创]java WEB学习笔记106:Spring学习---AOP的通知 :前置通知,后置通知,返回通知,异常通知,环绕通知
  2. iOS开发--二维码的生成
  3. solr与.net系列课程(三)solr连接数据库
  4. Log4j2常见使用示例及Syslog/Syslog-ng
  5. MapReduce:详解Shuffle过程
  6. HDOJ-三部曲一(搜索、数学)-1008-Prime Path
  7. Unity3d 接入 移动MM支付SDK(2.3) 全攻略
  8. 关于Java(Hello World程序)
  9. 9.29noip模拟试题
  10. java--GUI(图形用户接口)
  11. T分布
  12. 初学版本控制更新Version control
  13. 加载XML文件到系统中
  14. (转)Java调用Weservice
  15. android抽屉效果
  16. Spring 基础概念——DI、IOC(一)
  17. 嵌入式 视频编码(H264)hi3518
  18. Bootstrap3.1开发的响应式个人简历模板
  19. Rigidbody-ClosestPointOnBounds测试
  20. 华农校赛--G,用set比较大小,缩短时间复杂度

热门文章

  1. 超简单MVC应用程序播放WMV视频
  2. 数据库中存储日期的字段类型到底应该用varchar还是datetime
  3. Docker创建运行多个mysql容器
  4. linux系统编程:自己动手写一个cp命令
  5. HDU6197
  6. CA210彩分仪校准步骤
  7. python-访问者模式
  8. centos7 mysql8.0 RPM软件包方式安装
  9. 【代码笔记】iOS-NSSearchPathForDirectoriesInDomainsDemo
  10. SD从零开始38-40