swift语言Swift 集成了哪些语言的特性

swift语言  时间:2021-09-02  阅读:()

SWIFT 中文解释是什麽

n. [鸟]雨燕, (梳棉机等的)大滚筒 adj. 迅速的, 快的, 敏捷的, 立刻的 adv. 迅速地, 敏捷地 SWIFT一般用作项目资料的统称。

比较迅速,快捷的。

Swift语言已经出来一段时间了,大家觉得怎样

翻完iBooks书店上的The Swift Programming Language, 也了Xcode 6的beta版本来试验了一下。

现在可以评价一下。

如发现不对的地方,请在评论中指出,我斟酌后进行修正。

主要从技术的角度。

而商业的角度,吸引开发者,共同维护苹果生态圈的繁荣等之类就不说了。

我不敢说swift学了有没有用,可不可以挣更多钱,但这门语言还是比较有意思的。

swift骨子里面还是objc,但打扮过,比原来的模样漂亮。

个人感觉,苹果还真的想用它取代objc呢。

------------------ swift 跟 objc 共用同一套的运行时环境 swift 的类型,可以桥接到 objc 的类型,反之亦然。

如 string 对应原来objc的NSString, closures对应objc的block,等等。

objc 积累下来的大量库,实现不用改写,swift 就直接可以使用。

(最多加个声明文件)。

看两个API的声明,对比一下 objc void dispatch_apply(size_t iterations, dispatch_queue_t queue, void (^block)(size_t)); - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; swift func dispatch_apply(iterations: UInt, queue: dispatch_queue_t!, block: ((UInt) -> Void)!) func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) 我怀疑,swift中的接口文件,是利用原来objc,c中的接口文件自动程序生成的。

同一个工程,可以同时使用swift, objc, c, c++ 四种编译语言(额外嵌入的脚本语言另算) 原来的 iOS/Mac 工程,已经可以同时使用objc, c, C++三种语言。

现在支持第四种。

objc, c, c++三种语言的结合很容易, objc跟c本身就兼容,objc跟c++结合只要将文件名改成.mm。

而swift跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。

这里的桥接很容易,Apple自家的各种 C 库移植过来了。

比如Core Image/Audio,直接包含 import CoreAudio import CoreImage 就可以使用了。

现在swift完全可以跟objc并存,原来的工程不建议重写,也不用重写。

顺其自然,慢慢让它进化就是了。

swift 写法看起来像脚本语言,但它是真正的编译语言 初学者,看它使用了 let a = 4 var b = "hello" 没有类型定义,就想当然的觉得它是脚本语言,解释执行,这是错误的。

上面两行语句是用了类型推导,类似 C++ 里面的auto。

swift跟objc的运行时环境一样,写的程序跑起来不会比objc慢。

swift区分了struct和class, 分别使用传值跟传引用。

适当地使用struct,应该会比objc要快一点。

swift 吸收了很多其它语言的语法,写起来比objc简洁得多,不过它骨子里面的概念,跟原来objc差不多 编程语言的语法重要,但是语法背后的概念更重要。

比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。

继承又可能分成多重继承,接口继承,实现继承。

或者还会有些嵌套类,嵌套函数等等。

当明白语法背后的概念,知道为什么需要有这些东西。

之后从一门语言切换到另一门有着相同概念的语言,其实很容易。

而语法会影响表达,理论上每门语言都可以表达任何概念。

不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。

感觉上,swift有着 obj-c, C++, Ruby的影子。

暂时,我自己最喜欢的3个特性有 tuple,终于可以返回多个数值了。

一行交换两个值。

C++里面的tie+tuple也可以实现类似功能,不过使用库,显得噪音太多。

closure,喜欢它的简写,还有在函数最后一参数,可以写在()外面。

这些特性,用来写函数式风格的程序,会很好看。

而原来objc的block, 还有c++的function, 就太啰嗦了。

switch,case里面的条件匹配。

这些语法,编译最后还是会映射成原来objc的运行模型。

原来objc的概念,引用记数,ARC, 属性,协议,接口,初始化,扩展类,函数等等,继续有效。

我将swift看成是objc的一块大大的语法糖。

有个大块头的东西,是原来objc没有的,就是泛型。

swift中 将那种操作写一次,就可以作用多个类型的语法叫做generics(泛型),而C++中称为template(模板),叫法不同,本质是同样的东西。

总的说来,swfit 涵盖了现在流行的编程方式,结构化,面向对象,泛型,函数式。

swift的新语法,可以很好地支持内部DSL 有一种编程风格,不太好归类。

就是将程序拆分成,描述+解释。

解释部分写一次,其它地方使用描述式的语句,而不是命令式的语句。

内部DSL,通常利用主语言的语法特性,创出一套写法,来写一些描述性的语句。

这些语句组合起来,就像一门新语言似得。

这个比较难理解。

举个例子(从ruby那里借过来的),假如计算,几小时之后的秒数。

C语言中,大概会写成 getHourSeconds(3) 而现在 swift中,只要定义了扩展 extension Int { var hours:Int { return self * 3600 } var ago:Int { return -self } } 就可以写成 3.hours 3.hours.ago 分别是3小时后的秒数,3小时前的秒数。

同理,也可以写成 10.days 10.days.ago 这种写法,看起来跟原来的命令式写法完全不同。

这些程序是描述性的。

原来的objc, 做不到这点。

我估计swift以后会冒出大量这样风格的库。

这种风格,到底好不好,要看情况。

比较方便定义内部DSL的语言, 我自己知道的有C++, Ruby, Lisp。

现在多了Swift。

认为所有人都是0基础的,是错误的 有些人学得特别快,因为之前的基础好。

语言的语法只是表面,表面的东西总是变动得比较快的。

底下的东西重要得多,而看不见。

水面一块冰,有些人是冰山露出一角,有些人是无根的浮冰。

看起来差不多,其实差别十分之大。

我相信有些人,在两个小时之内就可以使用这门新语言。

提提那个Playground 之前苹果的员工,Bret Victor 演讲过个。

提到这个这种可视化编程。

当我们每一步操作,都得到实时地反馈,我们的做法会有很多不同,做出的东西也会不同。

这个Playground,用来学习swift的特性很好用,不过我还不知道怎么才能跟工程结合起来使用,不作评论。

可以直接学习 Swift 语言吗?

直接开始学swift没问题,应该可以覆盖objc的所有主要功能,并非辅助语言。

Apple开发这个语言的目的就是帮助初学者快速上手。

但是,看他的特点比较像scala,类似这种语言都容易上手,难于规范。

? ? ? ? ?因为太多灵活,不够死板,不会大规模用于企业的大项目。

学swift,估计自己开始做了几个小应用之后还是需要迫于行业规范再去学习objc一句话,独立开发可以从swift开始,找工作求职还是先学obj-c吧

Objective-C 和 Swift 语言,哪个更容易学习

从语言上讲,Swift?比?Objective-C?更简单,但是简单是对于有编程基础的人来讲,它的?syntax?更清楚,简洁,很多程序员看到了真是爱不释手。

????从开发角度上讲,Swift?比?Objective-C?难的多,首先虽然?Swift?出来没几天,出来一堆一堆的教程,但是仔细翻翻讲真正?iOS?或者?OS?X?开发的真心没有多少。

所以虽然你明白了语言怎么回事,但是真正上手开发,可能就不是想象中的那样了。

不过这又得分: ????对于已经熟悉?Cocoa,?Cocoa?touch?开发的开发人员来讲,Swift?还是很容易上手的,Apple?的开发团队在这方面真是下了不少功夫,帮助开发者尽可能的方便的使用?Swift。

如果你已经非常熟悉Cocoa,?Cocoa?touch?的开发环境,各种?Framework,API,你会觉得?Swift?用于开发真的很方便,也容易上手。

对于完全不懂?Objective-C?并且没有任何?Cocoa,?Cocoa?touch?开发经验的人来讲,直接上手学习?Swift?依然会非常困难。

语言懂了不顶用,你还要去熟悉各种?API,?熟悉整个Cocoa,?Cocoa?touch?的开发环境,卡住不懂了,搜一下,全是?Objective-C?的例子,真的会很难受。

????如果你已经是使用?Objective-C?的程序员的话,Swift?真的很简单,你可以用很少的时间掌握它,并且直接使用它开发。

如果你是初学者的话,Swift?和?Objective-C?对于你来说都会很难,可能?Swift?本身简洁的语言特色会让你觉得容易理解,如果你是为了学习立马进行开发的话,Objective-C?相比下会简单很多。

你会找到更多的学习资源和参考,寻求帮助的时候也能得到更有经验和专业的回答。

swift 语言中的++,==,+=分别代表什么?

++ 变量自增一。

如: a = 3; a++ 执行后 a 值为4 == 判断左右两边变量是否相等。

如: a == 3 ,如果 a 的值为3,返回真,否则返回假。

+= 左边变量加上右边的值,和赋值回左边变量。

如 a = 3; a += 4,执行后 a 的值为 7 这不是 swift 特有的运算符,C/C++ 等很多语言均如此。

Swift 集成了哪些语言的特性

我个人的观点: 首先,有脚本语言的特性,如javascript。

其次,有C/C++的特点,如enum,struct类型,还有指针,不过在swift里,指针用起来没有C/C++方便。

至于它的面向对象特性,这个就不好说像谁了,现在一大把的语言都是面向对象的,c++,java等。

就我个人感觉而言,我觉得swift像 c java javascript的结合体......

HostYun 新增可选洛杉矶/日本机房 全场9折月付19.8元起

关于HostYun主机商在之前也有几次分享,这个前身是我们可能熟悉的小众的HostShare商家,主要就是提供廉价主机,那时候官方还声称选择这个品牌的机器不要用于正式生产项目,如今这个品牌重新转变成Hostyun。目前提供的VPS主机包括KVM和XEN架构,数据中心可选日本、韩国、香港和美国的多个地区机房,电信双程CN2 GIA线路,香港和日本机房,均为国内直连线路,访问质量不错。今天和大家分享下...

阿里云服务器绑定域名的几个流程整理

今天遇到一个网友,他之前一直在用阿里云虚拟主机,我们知道虚拟主机绑定域名是直接在面板上绑定的。这里由于他的网站项目流量比较大,虚拟主机是不够的,而且我看他虚拟主机已经有升级过。这里要说的是,用过阿里云虚拟主机的朋友可能会比较一下价格,实际上虚拟主机价格比云服务器还贵。所以,基于成本和性能的考虑,建议他选择云服务器。毕竟他的备案都接入在阿里云。这里在选择阿里云服务器后,他就蒙圈不知道如何绑定域名。这...

VPSMS:53元/月KVM-512MB/15G SSD/1TB/洛杉矶CN2 GIA

VPSMS最近在做两周年活动,加上双十一也不久了,商家针对美国洛杉矶CN2 GIA线路VPS主机提供月付6.8折,季付6.2折优惠码,同时活动期间充值800元送150元。这是一家由港人和国人合资开办的VPS主机商,提供基于KVM架构的VPS主机,美国洛杉矶安畅的机器,线路方面电信联通CN2 GIA,移动直连,国内访问速度不错。下面分享几款VPS主机配置信息。CPU:1core内存:512MB硬盘:...

swift语言为你推荐
起英文名取个英文名开发者账号如何免费申请开发者账号体系文件怎么建立公司体系文件?体系文件包括哪些内容?怎么入手?教育城域网怎样进入寿光教育城域网网站什么是光纤什么是光纤?什么是宽带?两者有什么不同?乐辞自驱力读后感360官网打不开360系统防护无法开启?怎么办?急!!!!!趋势防毒如何给服务器安装趋势防毒网络版软件怎样上传照片如何上传照片3g模块工业上的3G模块一般使用什么接口与控制板通讯。
国外虚拟空间 广州主机租用 什么是二级域名 naning9韩国官网 vps.net diahosting 云图标 web服务器架设软件 发包服务器 e蜗牛 seednet ntfs格式分区 秒杀汇 免费全能主机 免费测手机号 重庆双线服务器托管 无限流量 网页提速 starry 上海电信测速 更多