掀起你的盖头来——Swift语言

来源:互联网 发布:知乎 七月在夏天 编辑:程序博客网 时间:2024/05/16 18:05

转载自: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)以及参数类型,在方法调用里会用到外部参数名,局部参数名是用在方法体内的。

0 0