swift初探
2014-06-22
swift初探
自从swift公布以来,火得不得了。如果你是开发者,还没有看过swift,那还真是out了(不过话说回来,并不是没有看过swift就不是好开发者。好的程序员跟看没看过某种语言没有什么关系)。我从公布以来就断断续续的看,一直在看官方的英文文档。偶尔也看看别人写的或者翻译的文章。现在虽然没有把官方文档看完,但是也看了大部分,可以写写感想心得。
简单来说,swift是集合了许多脚本语言的特性而又不像其他一般的脚本语言的苹果新生代开发语言。swift集合了很多语言的特性,如ruby,object-c,c++,c#等,其中长得最像的应该是ruby。咋看之下swift就想ruby一样的脚本语言。完全面向对象,类型定义,closure特性,函数式编程等等。不过据官方文档介绍,swift语言不是解释型语言,它最终会编译成二进制代码,并且它的运行效率比object-c要快。说比object-C要快我是比较怀疑的,而外国开发者进行了测试,得出结论是如果不强加一些编译优化的话,是快不过objC的。
如果对ruby,Object-C,c++语言熟悉的话,学起swift来应该没有什么难度。但是它还有很多语法特性是别的语言没有的,并且有些在我看来有点奇怪的特性。不过这是都没有什么,说明自己见识少,熟悉了就好了。首先一个比较特别的是,你不在需要在每行代码结束时加上分号,直接回车换行就行。当然,如果你一行有多句代码,每一句的末尾还是要加分号的。然后另外一个我自己不太适应的是if语句的判断表达式不再需要用括号括起来,我自己感觉很别扭。当然,也还有别的语法,不同,例如函数的定义用func,返回值的表示用"->".Object-C那种方法调用方式不再有,所有的都是用.来访问和调用。我觉得swift基本上对所有的一些语法特性都是借鉴其他语言一些优秀特性,并且加入了自己特有的方式,形成swift自己独特的语法。比如说函数的形式参数,像c++一样是用括号括起来,可以有默认值,并且可以有外部标签,就是像Object-C一样对每个参数加个标签标明它的意义。还有不知道是否是独创的通过tuple支持多返回值。还有对闭包的支持。我自己的理解是Object-C的block也属于闭包,但是它语法是类C的,swift的closure是纯正的闭包特性,而且可以简化到令人发指的地步。
swift可以说是很多语言的集大成者,并且超越它所借鉴的那些语言。也是这是苹果要取代Object-C的原因。我以前很喜欢Object-C,现在也喜欢,只是swift出来之后就没那么喜欢了。因为我看到了一个更好的语言。我本身java写得最多,开始是对c++的怕和恨,到对java的喜欢,再到对它的厌倦,然后发现Object-C的不错进而对它喜爱。而现在我要跨越它,进入swift的领地。
未完待续...