幼谈苹果新开发语言:Swift和苹果的用心

今天是个值得记念的日子:由于苹果的WWDC大会。苹果的每次WWDC(全球开发者大会)举行都让咱们像打了肾上腺素这么兴奋、幸福、惊叹、震撼、深思。javascript

今年也不例外,最关键的是苹果带来了它的一门新开发语言:Swift.java

霎时间风起云涌,短短几个小时互联网界掀起了一股谈论Swift的小高潮,若是你不知道Swift,你会以为这是一件很丢脸的事情,粑粑。python

为了避免至于太落后受鄙视,我今天也来简单谈谈Swift(不知道为什么,国内把它称为雨燕。别这样好吗?这让我想起了 长安铃木的Swift 雨燕汽车)android

1

1、全新Swift编程语言改变了Objective-C复杂的语法,并保留了Smalltalk的动态特性ios

 这是目前你们公认的对Swift的评价。这里咱们来解读一下:程序员

 Objective- C:扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,是NeXTSTEP和OpenStep的基本语言。(百度百科上抄的),简单一句话就是:objc主要是开发ios应用的(尤为iphone),由于iphone火了,因此objective-c也火了。若是硬要说objective- c有多优秀,那倒也不至于,当时nextstep选用它开发,就是由于这货用起来比较方便。objective-c

不过尤为是objc的初学者,你会发现,这厮刚开始开发不习惯时是在太繁琐了。至少我刚开始接触xcode编程时对objc语法极端的不适应。若是不是xcode编辑器足够的智能,不然让我用记事本写objc代码必定连坨翔都写不出。譬如咱们来看段代码:编程

 myclass *mm=[[myclass alloc] initmy:[NSString stringByFormat:"%@",@"shenyi"]]; //手敲的,估计有错,懒得检查,没兴趣。swift

若是换成java其实就是:c#

 myclass mm=new myclass("shenyi"); //就是这么清新爽洁,不紧绷。

Smalltalk:大叔级程序员必定有所耳闻,它被称为“面向对象编程之母”,主要被普遍应用于上个世纪80年代,它的出现推进了Objective-C,Actor, Java 和Ruby这些高大上语言的产生。

咱们来简单看一下Smalltalk的语法:

一、赋值。 := ,要让变量a=1,则须要a:=1

二、比较。= 譬如来判断变量a是否等于变量b ,这种比较用于内容比较,非指针,

三、深比较a==b . 这是用来比较指针的,很纯粹的比较。

对象定义:

在java中也许咱们得,int a;String b;float c;

但 是在Smalltalk中,只需|a b c| ,既完成了三个对象的定义,由于Smalltalk也是“接受任意类型的对象”的。后面咱们就能理解,为什么Swift也是这种货色,只不过赤裸裸的|a b c |确实不太容易阅读,所以,加了一个var 的关键字。譬如var a=1; 诸如此类

调用函数:

其实最令我吃惊的是Smalltalk的表达式。

譬如在java中咱们要写下面的代码:

  假设有个类叫作myclass,里面有个方法是 showName,传入一个字符串,而后赤裸裸的返回。

在java中调用:myclass _mm=new myclass();String a="沈逸"; String b=_mm.showName(a);

你们确定看得懂,而后咱们来看Smalltalk的写法

 |a b|.

 a:="沈逸".

 mm:=myclass new.

 b:=mm showName:a.

 

好吧,你们会发现,smalltalk连"."、","都木有。你们仔细体会一下吧,有利于后面咱们来理解Swift为什么是objc和smalltalk的优生优育品种。

 

啥叫动态特性?

 这句话的第三个知识点是”动态特性“。

 所谓的动态特性是指:在运行时才进行关系肯定的特性。 也就是说譬如Smalltalk,假设有个变量,这个变量是在运行时才进行它的类型检测和关系绑定的。

因此Smalltalk并不须要事先申明变量的类型,运行时进行系统自动检测。

 

2、关于Swift语言

 看这节前,咱们心里先默念objective-c和smalltalk,接下来你就不难理解这货为什么会这样了。

 变量:

 var a=1    你们能够看到,smalltalk的动态特性出现咧~~~~

 还能够强迫指定类型: var a:Int=1   咱们来想一下smalltalk 是这样写的吧

 |a|

 a:=1(???var a:(Int)=1)

 

数组和对象:

若是你会javascript,那么恭喜你,你已经会Swift的数组和对象了。看代码:

var mylist=["I","love","you"]; //数组

对象:

 var mylist=[

  "name":"shenyi",

  "sex":"男"

]

循环:

var b=0;

var a= 0
    for i in 0..10 {  
        b+= i  
    }  

这是一目了然的简单。 注意这里有一种".." 还有一个是"...", 前者所谓的是前闭后开,后者是前开后闭。啥意思?很简单嘛

var a= 0
    for i in 0..10 {  
        b+= i  
    }等同于

var a= 0
    for var i=0;i<10;++i{
        b+= i  
    }

函数:

 

func showname(name: String, age: Int)-> String {
       return "个人名字是 \(name), 年龄 是 \(age)."
} 

 

函数定义等同于java中的:

String showname(String name,int age)

同时,你还能够经过元组返回多个值

func  getusersage(Int,Int,Int){

 return (20,23,25)

} 

啥叫元组?(可不是元祖蛋糕哦~~)我举个例子:

var dept1=['小张','小明']; 表明部门1 中有小张和小明两个同事。

var dept2=['小红',dept1] ;表明部门2是一个大部门,包含了小红以及部门1的全部同事,共三我的。

其实 detp1[1]的值是小明。 同理:dept2[1][1]的值 仍是小明

 

好了,这里只作个大概介绍,本文并非教程,错误之处不免。同时我的总结一下:

一、你们若是真要学Swift,那么请在mac上自行搭建环境边测试边学,网上目前很早就放出来的几个Swift目测都有笔误和讲的混淆的地方(个人也同样),学编程最主要的仍是要”本身动手,丰衣足食“,看教程看的大概便可。

二、swift刚出来,你们千万不要认为objective-c一点不会直接进入swift就能够开发APP了。目测,这和vc和vc.net出来后同样的道理,你若是彻底不会vc,那么vc.net也玩不转

三、Swift和objc的交互到底到达什么程度,我还没试用过,100%兼容我我的认为目前是不可能的。

四、当年c#刚出生(2000年),也是经过了多个版本后开始逐步强大和成熟。Swift不可能由于是苹果的就不须要走这条”曲折的道路“。

五、objc确实有点繁琐,可是不像网上某些教程说的”极为繁琐”,要说替代还为之过早。

六、 若是要说Swift的目的,我我的认为确定不是苹果为了“减轻开发者负担,下降学习门槛”而设置的,若是要说性能,也许Swift要更胜一筹,但绝对不是 微博上某些“objc喷子”说的比objc高N个档次,我的更认为Swift多是苹果进军 1)跨平台 2)穿戴智能设备 3)智能家居等   几个方面或某个方面用的。

 正由于objc的一些特性,让不少android开发者不肯意转换到哪怕脚踏两只船到ios阵营中(这只是其中一个因素),若是出现了一个swift,也许就不同了。(仅仅是也许)

七、固然也有种多是苹果将来的硬件设备会作大的内核更新,也许内部开发也已经使用了Swift语言。由于在Iphone的A6及以上处理器中(iPhone5采用了A6双核处理器),苹果自主设计的内核已经命名为Swift了。

八、有人说苹果是为了和Android竞争。我的认为这彻底不必,苹果的产品一贯是“硬件和软件的完美结合”这个特性打的天下。苹果更大的着力点应该是在硬件上,不必在软件上和人家分高低。

九、不少人看了一些swift 的教程后(今天才出来的教程哦),以为swift抄袭了不少语言的特性如java、c#、python。 其实用“借鉴”更合适,由于人家是苹果。若是咱们这么作了,才叫抄袭。

十、今天我在微博上打一则招聘广告,这么写了:急需IOS开发,须要精通Swift,开发经验一天。 结果有几个网友来告诉我,很想应聘,只不过离开招聘要求还差几个小时。~~~~~~

 

--------------------------------

 

 

关注个人微信公众号,天天成熟一点点用不一样的角度为你解读各类IT世界观
关注步骤:
  很直接的拿出手机->打开微信->点扫一扫,扫下面二维码便可

 

 

相关文章
相关标签/搜索