Swift 学习之枚举和结构体—003

/**************************枚举************************/

//enum 并把定义放在大括号内,枚举中被定义的值为枚举成员,case 关键字表示新定义的一行成员, swift 中可以将枚举成员声明为不同类型的实例值

//不像 C Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值,case关键词表明新的一行成员值将被定义


//Rank 为枚举类型,而 Int 为枚举原始值类型

enum Rank: Int {

     case Ace = 0

     case One, Two, Three, Four, Five

     case Jack, Queen, King

    

 func simpleDescription() -> String {

    //因为 self Rank 类型,所以可以使用点语法

    switch self {

        case Rank.Ace:

             return "ace"

        case .Jack:

            return "jack"

        case Rank.Queen:

            return "queen"

        case Rank.King:

            return "king"

        default:

            return String(self.toRaw())

        }

     }

    

    func comparse(other: Rank) -> Bool {

      if self.toRaw() > other.toRaw(){

         return true

        }else{

         return false

        }

    }

}


// ace 定义为 Rank类型后,可直接只用点操作符再为其赋值(其他的枚举值)

var ace = Rank.Ace

ace = .Jack

//现在 ace = Jack,调用simpleDescription()方法

ace.simpleDescription()


//使用 toRaw fromRaw 在原始值和枚举值之间进行转换

let aceRawValue = ace.toRaw()

let test = Rank.fromRaw(1)


//创建2 Rank 类型的变量

var rank1 = Rank.One

var rank2 = Rank.Two


if rank1 .comparse(rank2){

println("因为 rank1的原始值大于 rank2的原始值,所以 rank1的枚举值大于 rank2的枚举值")

}else{

println("反之")

}


if let convertedRank = Rank.fromRaw(3) {

convertedRank //Enum Value 表示该值为枚举值

let threeDescription = convertedRank.simpleDescription()

}



/**************************结构体************************/

//使用 struct 来创建一个结构体  结构体是传值,而类是传引用

//一个枚举类型的实例可以有实例值,相同枚举类型的实例可以有不同的值,创建实例的时候传入值即可,实例值与原始值是不同的,枚举成员的原始值相对于所有的实例都是相同的,而你是在定义枚举的时候设置原始值。


/**************************接口和扩展************************/

//使用protocol 来声明一个接口 类,枚举,结构体都可以实现接口

//使用extension来声明一个扩展

//mutating 关键字用来标记一个会修改结构体的方法


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值