首页 > 代码库 > Swift初步介绍

Swift初步介绍

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影响的最多)。下面我举几个简单的例子,列举我认为的语言出处,希望能大概的看到它的设计哲学和语言特色。事先声明一下,个人知识所限,有些出处可能说的不准确,还请见谅指正,感谢。

1.声明变量

Swift是门强类型语言,引入了其它强类型语言的类型推导机制。
声明一个变量

var i = 100

声明一个常量

let i = 100

变量与常量使用不同的关键字,这个应该是模仿Scala的var和val,let关键字则应该是来自Mozilla的rust语言,不过含义正好相反。

 

2.类型声明后置

var name:String = "Swift"

 

 

3.所有的函数现在都是闭包了

func getGasPrices() -> (Double, Double, Double) {
  return (3.59, 3.69, 3.79)
}

 

 

4.类定义终于使用class了

 

 

5.定义属性使用set/get

var sideLength : double 
var perimeter: Double {
  get {
    return 3.0 * sideLength
  }
  set {
    sideLength = newValue / 3.0
  }
}

C#最早发明的语法。

 

6.重载父类方法需要加override关键字

override func simpleDescription() -> String {
  return "A square with sides of length \(sideLength)."
}

来自Java的@Override注解。

 

7.enum是一种类定义

可以在enum里加入方法,我记得这是Java的,C++11也引入了相似的概念和写法。

 

8.引入了(或者说保留?)struct,它和class不同的地方在于,变量赋值时,struct变量是内容复制,class是引用复制,这个毫无疑问,C#的东西。

9.范式,可以创建方法模板

func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
  var result = ItemType[]()
  for i in 0..times {
    result += item
  }
  return result
}
repeat("knock", 4)