swift语法总结(枚举类型与结构体)

2019-03-25  本文已影响0人  coder_xiang

枚举类型的介绍

概念介绍

enum SomeEnumeration {
// enumeration definition goes here
}

枚举类型的定义
以下是指南针四个方向的一个例子

enum CompassPoint {
  case North
  case South
  case East
  case West
}

定义方式二:多个成员值可以出现在同一行上

enum Planet {
  case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

给枚举类型赋值

// 1.枚举类型的赋值
enum CompassPoint : Int {
  case North = 1
  case South = 2
  case East = 3
  case West = 4
}

enum Planet {
  case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}


// 2.枚举类型的使用
let p = Planet(rawValue: 3)

if let p = p {
    switch p {
    case .Mercury:
        print("Mercury")
    case .Venus:
        print("Venus")
    case .Earth:
        print("Mercury")
    case .Mars:
        print("Mars")
    case .Jupiter:
        print("Jupiter")
    case .Saturn:
        print("Saturn")
    case .Uranus:
        print("Uranus")
    case .Neptune:
        print("Neptune")
    }
}

结构体

结构体的介绍

struct 结构体名称 {
    // 属性和方法
}

为什么需要结构体?

let centerX : Double = 100
let centerY : Double = 100

func inRange(x : Double, y : Double) -> Bool {
    let disX = x - centerX
    let disY = y - centerX

    let dis = sqrt(pow(disX, 2) + pow(disY, 2))

    return dis < 200
}

let x : Double = 100
let y : Double = 1000

inRange(x, y: y)

inRange(location1)
inRange(myHome)

// 初始化结构体
struct Location {
    var x : Double
    var y : Double
}

// 创建结构体
let location = Location(x: 90, y: 90)

// 优化刚才的方法
func inRange(location : Location) -> Bool {
    let disX = location.x - centerX
    let disY = location.y - centerY

    let dis = sqrt(pow(disX, 2) + pow(disY, 2))

    return dis < 200
}

inRange(location)

结构体的增强

struct Location {
    var x : Double
    var y : Double

    init(x : Double, y : Double) {
        self.x = x
        self.y = y
    }

    init(xyString : String) {
        let strs = xyString.componentsSeparatedByString(",")
        x = Double(strs.first!)!
        y = Double(strs.last!)!
    }
}

let location = Location(x: 100, y: 100)
let location1 = Location(xyString: "100,100")

struct Location {
    var x : Double
    var y : Double

    init(x : Double, y : Double) {
        self.x = x
        self.y = y
    }

    init(xyString : String) {
        let strs = xyString.componentsSeparatedByString(",")
        x = Double(strs.first!)!
        y = Double(strs.last!)!
    }

    mutating func moveH(x : Double) {
        self.x += x
    }

    mutating func moveV(y : Double) {
        self.y += y
    }
}

extension Location {
    mutating func moveH(x : Double) {
        self.x += x
    }

    mutating func moveV(y : Double) {
        self.y += y
    }
}
上一篇 下一篇

猜你喜欢

热点阅读