swift 新特性

switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。
运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break。
 1 let vegetable = "red pepper" 
 2 switch vegetable { 
 3 case "celery": 
 4     let vegetableComment = "Add some raisins and make ants on a log." 
 5 case "cucumber", "watercress": 
 6     let vegetableComment = "That would make a good tea sandwich." 
 7 case let x where x.hasSuffix("pepper"): 
 8     let vegetableComment = "Is it a spicy \(x)?" 
 9 default: 
10     let vegetableComment = "Everything tastes good in soup." 
11 } 

 

子类的定义方法是在它们的类名后面加上父类的名字,用冒号分割。创建类的时候并不需要一个标准的根类,所以你可以忽略父类。
 
子类如果要重写父类的方法的话,需要用override标记——如果没有添加override就重写父类方法的话编译器会报错。编译器同样会检测override标记的方法是否确实在父类中。
 1 class Square: NamedShape { 
 2     var sideLength: Double 
 3   
 4     init(sideLength: Double, name: String) { 
 5         self.sideLength = sideLength 
 6         super.init(name: name) 
 7         numberOfSides = 4 
 8     } 
 9   
10     func area() ->  Double { 
11         return sideLength * sideLength 
12     } 
13   
14     override func simpleDescription() -> String { 
15         return "A square with sides of length \(sideLength)." 
16     } 
17 } 
18 let test = Square(sideLength: 5.2, name: "my test square") 
19 test.area() 
20 test.simpleDescription() 

使用enum来创建一个枚举。就像类和其他所有命名类型一样,枚举可以包含方法。

和oc不同的是可以指定初始的开始值,可以使字符串类型,下边的方法是对当前属性的描述,这个很直观

 1 enum Rank: Int { 
 2     case Ace = 1 
 3     case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 
 4     case Jack, Queen, King 
 5     func simpleDescription() -> String { 
 6         switch self { 
 7         case .Ace: 
 8             return "ace" 
 9         case .Jack: 
10             return "jack" 
11         case .Queen: 
12             return "queen" 
13         case .King: 
14             return "king" 
15         default: 
16             return String(self.toRaw()) 
17         } 
18     } 
19 } 
20 let ace = Rank.Ace 
21 let aceRawValue = ace.toRaw() 

 

posted @ 2015-08-30 16:07  马在路上  阅读(365)  评论(0编辑  收藏  举报