转载自:http://www.boode.com.cn/share/swift.html
苹果在今年的 WWDC 大会上推出了Swift编程语言,它是一门博采众长的现代语言。苹果的目的很明显,就是要让 Swift 替换 Objective-C。Swift 很简单,学起来也很容易,所以它有望成为示教编程的默认语言,其功能之强大可以满足任何企业变成要求。Swift具有快速、现代、安全、可交互等特征,并且其语法简单,入门门槛低,有望替代语法复杂难懂的Objective-C语言。
为了初步了解Swift语言的特点,我们写了一些简单的示例代码,从这些代码我们可以一窥其面目。
【HelloWorld】
1
|
println( "Hello World" ) |
有人可能要说,这行代码是否少分号了?不是这样的,在Swift里分号是可写可不写的!也没有IMPORT语句、main函数,也没有@符号。编译运行可以看到控制台打印的Hello World字样。这里的println是全局函数,负责打印参数内容,并换行 。
【声明变量和常量】
1
2
|
var legs = 4 // 变量legs
let PI = 3.1415926 // 常量PI |
legs为变量,PI是常量,它们到底是什么类型呢?答案是Type Inference(类型推测),由于这两个语句在声明的同时并且初始化,因为4是Int类型,因此推测变量legs为Int类型,同 理,3.1415926为Double类型,因此推测PI为Double类型。也可以强制规定类型:
1
2
|
var legs:Int //legs被强制规定为整型 let PI:Double
//PI被强制规定为浮点数类型 |
【switch语句】
switch语句的case后不用加break。弱你在其它一些语言中不写break,那可就大错特错了!而在Swift中,switch选择的case语句执行完毕后立即跳出switch语句,而不会因为语句后没有break继续执行后面的case或者default语句
1
2
3
4
5
6
7
|
var a = 1 switch a { case 1 : println( 1 ) case 2 : println( 2 ) default : println( 3 ) } // no break at all |
【数组】
可以用n..m 或者 n...m 代替一个数组,比如:
1
|
for index in 0 .. 3 { println(index) } |
..代表前闭后开,...代表前后都闭合,所以0..3代表数组[0,1,2],而0...3代表[0,1,2,3]
【定义一个类 Class】
在Swift中,存在两种类型,一种是引用类型(reference type),一种是值类型(value type),class是引用类型,而enumeration和struct是值类型,它们的一个重要区别是传递的方式不一样,一个是传递副本,一个是传递本身
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<span> class Vehicle { </span>
var wheels:Int?
var maxPassengers:Int? func description() -> String {
return "This vehicle has \(wheels!) wheels,max passengers is \(maxPassengers!) " }
init(withWheels wheels:Int,andMaxPassengers maxPassengers:Int) {
self.wheels = wheels
self.maxPassengers = maxPassengers }
deinit { }
} |
该类名为Vehicle,声明了两个属性,wheels和maxPassengers。以及一个实例方法description,该方法没有参数,返回值为字符串类型。同时,该类提供一个初始化方法,init是关键字,该方法接受两个参数,代表之前声明的两个属性。该参数包括三个部分,分别是外部参数名(external parameter name),局部参数名(local parameter name)以及参数类型,在方法调用里会用到外部参数名,局部参数名是用在方法体内的。