[swift 2.0] swift 2.0 之枚举类型

枚举类型语法格式:

import UIKit

//写法一

enum Season{

   case Spring
  case Summer
  case Autumn
  case Winter

}

//写法二

enum Season2{

   case Spring, Summer,Autumn, Winter

}

//写法三(原始值),也不一定是 Int型,可以是其他类型,如String等
enum Season3: int {
 case Spring=1
  case Summer=6
  case Autumn=4
  case Winter=8
}

//写法四(原始值)
enum Season4: int {
 case Spring=1,Summer=2,Autumn=3, Winter=4
}

//写法五(原始值),Summer 会默认累加为2,依次类推Autumn。。
enum Season5: int {
 case Spring=1,Summer,Autumn, Winter
}

//写法六(原始值),Spring 默认为0,依次类推Summer。。
enum Season6: int {
 case Spring,Summer,Autumn, Winter
}

//用法
let curSeason: Season =Season.Spring
let curSeason3: Season3 = .Spring
let mySeason6:Season6 =.Autumn
print("the season 6 is \(mySeason6.rawValue)")// 打印结果为2

func getSeason(season: Season) ->String
{
    switch season
    {
    case .Spring :
        return "是春天"
    case .Summer:
        return "是夏天"
    case .Autumn:
        return "是秋天"
    case .Winter:
        return "是冬天"
    }
}

getSeason(curSeason)

//原始值
let mySeason:Season=.Spring
mySeason.rawValue   //值为1

let input=4
if let mySeason2=Season(rawValue:input)  //调用构造函数  并 解包
    print("this is \(mySeason3)")
}

//相关值(Associate vale) 设置关联值后不能设置rawValue
enum ATMStatus{
    case syccess(Int)
    case Error(String)
    case Waiting   //不关联值
}

var balance=1000

func widthdraw(amount:Int)->ATMStatus{
    if balance>=amount{
        balance-=amount
        return .Success(balance)
    }else{

        return  .Erron("Not enough money")
    }
}

let result = withdraw(100)
 //可以解析返回的关联值
switch result{
    case let .Success(newBalance):  //相当于解包
        print("\(newBlance) Yuan left in your account")
    case let .Error(errorMessage):
        print("Error:\(errorMessage)")
    case .Waiting:
        pringt("waiting...")
}

//复杂关联
enum Shape
{
    case Square(side:Double)
    case Rectangele(width:Double,height:Double)
    case Circle(centerx:Double,centery:Double,radius:Double)
    case Point
}
//用法
let square=Shape.Square(side:10)
let rectangle=Shape.Rectangle(width:20,height:30)
let circle=Shape.Circle(centerx:0,centery:0,radius:30)
let point =Shape.Point


func area(shape:Shape)->Double{
    switch shape{
        case let .Square(side): //解包边长 算面积
            return side*side
        case let .Rectangle(width ,height):
            return width*height
        case let .Circle(_,_,r): //使用_ 忽略没用的参数
            return M_PI*r*r     //M_PI  是π的静态常量变量
        case .Point
            return 0
    }
}

ares(square)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值