Swiftl优秀的特性

Swift语言在吸收诸多优秀语言如java,c++,Python之后,提供给开发者大量优秀的特性。

下面我列举一下,swift一些优秀的特性:

1、函数使用经典的圆括号和点调用语法

2、函数标签特性

Objective-C中的函数标签也是函数参数的一部分,它避免了参数过多的情况下分不清每个参数的含义。Objective-C的优秀特性被Swift继承了下来。Swift也支持标签。

3、严格的类型检查

Swift抛弃考虑Objective-C中松散的类型检查方式,进而使用严格的类型检查和转换操作。因为Swift所有的类型都是结构体或者类,没有了基本类型,所以基于值拷贝的转化都是拷贝操作。基于引用的方式是使用as,as?操作来进行的。

4、真正的面向对象语言

Swift是完全面向对象的语言。自身具有构造函数和析构函数,构造函数是以init开头的函数,而析构函数是以deinit开头的函数。注意,构造函数在创建对象的时候自动调用,不需要程序员额外主动地调用init函数;析构函数是对象生命周期结束的时候自动调用的。

5、命名空间

对于Swift来说,命名空间也是其中一个大特性。在后续的iOS开发中,特别是对于一些枚举类型,完全可以只是访问里面不同的部分,前缀相同的内容可以省略。

6、泛型处理

泛型是Swift的重要特性,也是Swift号称安全、类型严格的体现之一。对于Objective-C中的对象可以存放任何对象,但是对于Swift只能存放指定对象或者指定协议的对象。这样从编译代码的层次就限制了类型不匹配的特性。无论是系统自带的数组,还是字典或自定义的对象,都可以使用泛型来处理。

7、闭包Closure

闭包是现代语言的特性,简单的说就是子函数可以访问父函数里面的对象。Swift的闭包和Objective-C的Blocks 有相似之处。Swift闭包也遵守ARC内存管理。对于对象之间通信、回调函数、反向传值等,闭包都发挥了极大的作用。

网络下载就是一个常见的闭包处理函数。既有普通的闭包,也有尾部闭包函数,主要用来做回调CallBack使用。

时间: 2024-10-11 05:33:15

Swiftl优秀的特性的相关文章

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

delphi 各新版本特性收集

delphi 各新版本特性收集 Delphi XE6新增了一些特性并增强了原有的功能,主要有以下几个方面: IDE(整合开发环境) Internet XML(扩展标记语言) Compiler(编译器) COM/Active X Database support(数据库支持) CORBA Actions(动作) Custom Variants(可定义的可变类型) VCL 单元和特性 RTL单元和特性 Cross-platform development(跨平台开发) Translation too

Windows系统下三十款优秀开源软件

Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Firefox来作为你的网页浏览工具,那么你现在就可以动手了.它能够阻止那些烦人的弹出窗口,并且它还有大量优秀的插件,能够让你的网络冲浪体验更加美好.我可以全天候地赞美Firefox,但有一件事是肯定的:在新的Windows计算机上我要做的第一件事就是运行Internet Explorer,以让我去下载Fi

React的React Native

React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React,组件化似乎不再步履蹒跚,有了React Native,前端的边界似乎广阔无边.而Webpack凭借它异步加载和可分离打包等优秀的特性,走在取代Grunt和Gulp的路上.而面向未来的ES6,模块化的支持似乎已成定局. 我们现在就可以打造自己的Webpack+React+ES6环境并且开始探索起来. 这篇文章就给还没走在这条路上的前端一

Swift学习 (四)

5.枚举与结构体: 不必给枚举成员提供一个值.如果我们想要为枚举成员提供一个值(raw value),我们可以用字符串,字符,整型或浮点数类型. 1 2 3 4 5 6 7 enum CompassPoint { case North case South case East case West   }   var directionToHead = CompassPoint.West 结构体 Struct在Swift中和类有许多相同的地方,可以定义属性,方法,初始化方法,可通过extensio

MyBatis知多少(3)

解决存储过程固有限制的方法之一就是将SQL嵌入到更加通用的语言中去.与存储过程将业务逻辑移入数据库相反,内联SQL将SQL从数据库移入了应用程序代码.这就使得SQL语句可以直接与语言进行交互.从某种意义上说,SQL成为了该语言的一个特性.有很多语言具有这种“特 性”,包括COBOL.C.甚至Java.以下就是Java中SQL的一个示例: String name; Date hiredate; #sql { SELECT emp_name, hire_date ,hiredate FROM emp

Flipboard web移动端-打造每秒60帧的流畅体验

在智能手机和平板电脑的黎明时期, Flipboard 推出“移动先行”的体验,使我们可以重新思考页面中内容布局的原则,以及与触摸屏相关的,如何获得更好的用户体验的因素. 为了建立完整的体验,我们将 Flipboard 带到 web 端.我们在 Flipboard 所做的,在每台用户使用的设备上都拥有独立的价值:整理那些来自你最关心的主题,来源以及人的最好的故事.因此把我们的服务带到web端,也是一个合乎逻辑的延伸. 当我们开始这个项目后,认识到我们需要把源自移动体验的思考搬到 web 端,试图提

计算机图形学名词解释

转自 http://blog.csdn.net/lwfcgz/article/details/39254743 3D三维(three dimension).客观世界中静止的物体都是三维的,在计算机图形学中常在一定的坐标系中用(x,y,z)坐标系列表示物体. 3D modeling3D建模.用三维坐标来描述物体的形状.在各种计算机图形应用领域中有不同的三维建模方法,用不同的算法来描述这些领域中的物体和对象. 3D transformation3D变换.在三维空间中把物体的三维坐标从一个位置变换至另

React +ES6 +Webpack入门

React +ES6 +Webpack入门 React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利.其优秀的特性不再赘述.本文将详细的记录react babel webpack的环境搭建,以及搭建的过程中遇到的一些坑. 一.新建React项目 1.如图为新建react项目结构,其中 entry.js放置react入口代码,index.js放置react组件代码,asse