zoukankan      html  css  js  c++  java
  • 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() 
  • 相关阅读:
    一本通1273货币系统(方案数背包)
    背包体积循环正序和逆序的区别
    Python字典的底层原理和优缺点
    Linux各目录及每个目录的详细介绍
    openwrt 下python程序后台运行,并将打印信息保存文件
    pycharm同一目录下无法import其他文件
    python sqlite3学习笔记
    python sqlite3查询表记录
    Pycharm快捷键的使用
    Python3 Address already in use 解决方法
  • 原文地址:https://www.cnblogs.com/machao/p/4771065.html
Copyright © 2011-2022 走看看