Swift面向对象之枚举

//
//  main.swift
//  Swift面向对象之枚举
//
//  Created by Goddog on 15/7/17.
//  Copyright © 2015年 Goddog. All rights reserved.
//

import Foundation

print("Swift不仅是面向过程还是面向对象的,Swift可以定义枚举、结构体、类3种面向对象的类型,用枚举、结构体定义的变量属于值类型,用类定义的变量属于引用类型,3种面向对象都支持定义存储属性、计算属性、方法、下标、构造器和嵌套类型")

print("Swift5种面向对象的程序单元:类、结构体、枚举、扩展、协议")

print("定义类型的步骤:1.声明变量;2.创建实例;3.访问属性;4.调用方法;5.派生子类(枚举和结构体不支持继承)")

//MARK: - 定义枚举
enum Season
{
    case Spring
    case Summer
    case Fall
    case Winter
}
//或
enum Weekday
{
    case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
//使用枚举声明变量
var day: Weekday
//使用已有枚举赋值
day = Weekday.Saturday
print("结果是:\(day)")

//MARK: - 枚举值和switch语句
var chooseDay = Weekday.Monday
switch chooseDay
{
    case .Monday:
        print("周一")
    case .Tuesday:
        print("周二")
    case .Wednesday:
        print("周三")
    case .Thursday:
        print("周四")
    case .Friday:
        print("周五")
    case .Saturday:
        print("周六")
    default:
        print("周日")
}

//MARK: - 原始值
//定义枚举,指定原始值为Int
enum Weekdays: Int
{
    case Monday, Tuesday = 1, Wednessday = 5, Thursday, Friday, Saturday, Sunnday
}
var days = Weekdays.Monday
print("Monday is : \(days.rawValue)")   //0是根据Tuesday=1自动判断的
days = .Friday
print("Friday is : \(days.rawValue)")   //7是根据Wednessday=5自动判断的

enum Seasons: Character
{
    //为每个枚举指定原始值
    case Spring = "s"
    case Summer = "u"
    case Fall = "f"
    case Winter = "w"
}

//根据原始值获取枚举
var getSeason = Seasons(rawValue: "s")
if getSeason != nil
{
    switch (getSeason!)
    {
    case .Spring:
        print("春")
    case .Summer:
        print("夏")
    case .Fall:
        print("秋")
    default:
        print("冬")
    }
}


//MARK: - 关联值
enum Planet
{
    //不同枚举可以携带数量不等,类型不等的关联值
    case Mercury(weight: Double, density: Double, name: String)
    case Venus(Double, Double)
    case Earth(Double, String)
    case Mars(density: Double, name:String)
    case Jupiter
    case Saturn
    case Uranus
    case Nepturn
}

var p1 = Planet.Mercury(weight: 0.05, density: 5.43, name: "水星")
var p2 = Planet.Venus(0.815, 5.25)
var p3 = Planet.Earth(1.0, "地球")
var p4 = Planet.Mars(density: 3.95, name: "火星")

switch(p3)
{
    case Planet.Earth(var weight,var name):
        print("\(name),  \(weight)")
    default:
        break
}

switch (p1)
{
    case let .Venus(weight, density):
        print("\(weight),   \(density)")
    case let .Mercury(weight: w, density: d, name: n):
        print("\(w),  \(d),  \(n)")
    default:
        break
}









Swift不仅是面向过程还是面向对象的,Swift可以定义枚举、结构体、类3种面向对象的类型,用枚举、结构体定义的变量属于值类型,用类定义的变量属于引用类型,3种面向对象都支持定义存储属性、计算属性、方法、下标、构造器和嵌套类型
Swift5种面向对象的程序单元:类、结构体、枚举、扩展、协议
定义类型的步骤:1.声明变量;2.创建实例;3.访问属性;4.调用方法;5.派生子类(枚举和结构体不支持继承)
结果是:Swift面向对象之一.Weekday.Saturday
周一
Monday is : 0
Friday is : 7
春
地球,  1.0
0.05,  5.43,  水星
Program ended with exit code: 0


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值