Swift是本届WWDC大会苹果推出的一门新开发语言,开发者网站上已经放出了这门新语言的介绍、教程和手册,如果手里有一台iOS设备的话,通过苹果的iBooks应用,从它的官方书店里搜索Swift,可以下载它的官方手册电子书版。
为什么苹果要推出一门新的语言?现在苹果平台的主力开发语言,Objective-C已经无法再进化,无法再发展了,已经无法再赶上现代编程语言前进的步伐!了解Objective-C历史及原理的人都知道,Objective-C是门抄捷径的语言,它基本上没有发明新语法,仅仅是将Smalltalk的消息接口机制套在了C语法上,这虽然让它既拥有C语言的高效率和操纵系统一切的能力,也拥有了像Perl、Ruby等动态语言的动态特性,但是它的发展已经受限于古老的C语法,及C/C++令人恶心到吐的内存出错,想要在开发效率和丰富的表达能力上追赶C#、Go等语言已经是不可能完成的任务,因此干脆推出一门从头重新设计的语言,已经不是折腾不折腾的问题,而是必须的事情了。
虽然说Swift是门新语言,但是并非什么重新发明的语言,而是各种先进语言的大杂烩!例如很多网友第一眼看到它用func关键字定义函数就说这不是Go语言吗?当然了它不是Go的简单克隆品,像前面所说,是掺入了各种目前流行语言的特色(我个人认为Scala影响的最多)。下面我举几个简单的例子,列举我认为的语言出处,希望能大概的看到它的设计哲学和语言特色。事先声明一下,个人知识所限,有些出处可能说的不准确,还请见谅指正,感谢。
Swift是门强类型语言,引入了其它强类型语言的类型推导机制。
声明一个变量
var i = 100
声明一个常量
let i = 100
变量与常量使用不同的关键字,这个应该是模仿Scala的var和val,let关键字则应该是来自Mozilla的rust语言,不过含义正好相反。
var name:String = "Swift"
func getGasPrices() -> (Double, Double, Double) { return (3.59, 3.69, 3.79) }
var sideLength : double var perimeter: Double { get { return 3.0 * sideLength } set { sideLength = newValue / 3.0 } }
C#最早发明的语法。
override func simpleDescription() -> String { return "A square with sides of length \(sideLength)." }
来自Java的@Override注解。
可以在enum里加入方法,我记得这是Java的,C++11也引入了相似的概念和写法。
func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] { var result = ItemType[]() for i in 0..times { result += item } return result } repeat("knock", 4)
原文地址:http://www.cnblogs.com/Gbeniot/p/3769884.html