最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift枚舉的一些小用法總結(jié)

 更新時間:2019年07月04日 10:27:32   作者:即將成為型男的濤  
這篇文章主要給大家介紹了關(guān)于Swift枚舉的一些小用法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在 Swift 中,枚舉是一個非常方便也非常強(qiáng)大的類型。我們在日常使用中也經(jīng)常會使用到它。

例如,我們最常見的 optional:

enum Optional<T> {
 case Some(T)
 case None
}

這里不準(zhǔn)備介紹枚舉的基本用法,只是記錄兩個比較好用的枚舉用法。

關(guān)聯(lián)值

關(guān)聯(lián)值是將額外信息附加到 enum case 中的一種極好的方式。

例如,當(dāng)我們需要將一系列的值傳到下一個類中時,一般情況下我們像下方代碼一樣寫出幾個設(shè)置的方法:

struct MyStruct {
  var value: Int

  init(_ value: Int?) {
    if let val = value {
      self.value = val
    } else {
      self.value = Int(INT_MAX)
    }
  }
}

class Two {
  var value1: String?
  var value2: Int?
  var value3: MyStruct?

  func setValue1(value: String?) { }
  func setValue2(value: Int?) { }
  func setValue2(value: MyStruct?) { }
}

這樣當(dāng)需要傳的值變多時,代碼無疑就會變得沒那么好看了。我們可以用枚舉來簡化:

enum ValueBind {
  case bindStringValue(str: String)
  case bindIntValue(num: Int)
  case bindModel(model: MyStruct)
}

class Two {
  var value1: String?
  var value2: Int?
  var value3: MyStruct?

  func setValueBind(value: ValueBind) {
    switch value {
    case .bindStringValue(let str):
      print(str)
    case .bindModel(let model):
      print(model.value)
    case .bindIntValue(let num)
      print(num)
    }
  }
}

利用枚舉關(guān)聯(lián)值之后,咱們的代碼馬上就簡潔了不少。

自定義枚舉類型

平常我們使用枚舉時,我們在為枚舉定義 value 時,一般就只用了幾種基本的類型:

enum Direction {
  case left
  case top
  case right
  case bottom
}

enum StringEnum: String {
  case hello = "hello"
  case world = "world"
}

enum IntEnum: Int {
  case one = 1
  case two = 2
}

但是,如果我們需要在枚舉類型放入我們自定義的類型的話,我們就需要為枚舉加一些東西了。

enum CustomEnum: RawRepresentable {
  typealias RawValue = MyStruct

  case null
  case one
  case two
  
  init?(rawValue: MyStruct) {
    switch rawValue.value {
    case 1:
      self = .one
    case 2:
      self = .two
    default:
      self = .null
    }
  }

  var rawValue: MyStruct {
    switch self {
    case .one:
      return MyStruct(1)
    case .two:
      return MyStruct(2)
    default:
      return MyStruct(nil)
    }
  }
}

我們讓枚舉遵守 RawRepresentable 協(xié)議,并實(shí)現(xiàn)協(xié)議的一些屬性及方法:

/*
  將枚舉的 RawValue 關(guān)聯(lián)為自己希望的類型
**/
associatedtype RawValue

/*
  利用自己關(guān)聯(lián)的類型生成枚舉的實(shí)例
**/
init?(rawValue: Self.RawValue)

/*
  將自己定義的類型的作為 RawValue 返回
**/
var rawValue: Self.RawValue { get }

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Swift數(shù)組詳細(xì)用法解析

    Swift數(shù)組詳細(xì)用法解析

    這篇文章主要為大家詳細(xì)介紹了Swift數(shù)組詳細(xì)用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動效果

    Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動效果

    這篇文章主要為大家詳細(xì)介紹了Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Swift 4最全的新特性詳細(xì)解析(推薦)

    Swift 4最全的新特性詳細(xì)解析(推薦)

    Swift 4 在 Swift 3 的基礎(chǔ)上,提供了更強(qiáng)大的穩(wěn)健性和穩(wěn)定性。所以下面這篇文章就來給大家總結(jié)介紹關(guān)于Swift4新特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-11-11
  • Swift開發(fā)應(yīng)用中如何更方便地使用顏色詳解

    Swift開發(fā)應(yīng)用中如何更方便地使用顏色詳解

    這篇文章主要給大家介紹了關(guān)于Swift開發(fā)應(yīng)用中如何更方便地使用顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Swift 數(shù)組及常用方法詳解總結(jié)

    Swift 數(shù)組及常用方法詳解總結(jié)

    數(shù)組(Array)是有序的元素序列。 若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量
    2021-11-11
  • Swift實(shí)現(xiàn)無限輪播效果

    Swift實(shí)現(xiàn)無限輪播效果

    這篇文章主要為大家詳細(xì)介紹了Swift無限輪播效果實(shí)現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Swift心得筆記之函數(shù)

    Swift心得筆記之函數(shù)

    函數(shù)是執(zhí)行特定任務(wù)的代碼自包含塊。通過給定一個函數(shù)名稱標(biāo)識它是什么,并在需要的時候使用該名稱來調(diào)用函數(shù)以執(zhí)行任務(wù)。今天我們就來探討下swift中的函數(shù)問題。
    2015-04-04
  • 深入講解Swift的內(nèi)存管理

    深入講解Swift的內(nèi)存管理

    不管在什么語言里,內(nèi)存管理的內(nèi)容都很重要,Swift使用自動引用計(jì)數(shù)來管理應(yīng)用程序的內(nèi)存使用。這表示內(nèi)存管理已經(jīng)是Swift的一部分,在大多數(shù)情況下,你并不需要考慮內(nèi)存的管理。本文主要介紹了Swift中內(nèi)存管理的相關(guān)資料,需要的朋友可以參考。
    2017-03-03
  • Swift利用CoreData實(shí)現(xiàn)一個通訊錄存儲詳解

    Swift利用CoreData實(shí)現(xiàn)一個通訊錄存儲詳解

    這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實(shí)現(xiàn)一個通訊錄存儲的相關(guān)資料,本文是大家學(xué)習(xí)coreDate的基礎(chǔ)問題,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Swift NavigationBar隱藏后的右滑手勢效果

    Swift NavigationBar隱藏后的右滑手勢效果

    這篇文章主要為大家詳細(xì)介紹了Swift NavigationBar隱藏后的右滑手勢效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

漠河县| 华安县| 农安县| 三河市| 耒阳市| 屏东市| 博白县| 通州市| 新余市| 麻栗坡县| 望城县| 新乐市| 夹江县| 富源县| 南平市| 当阳市| 徐水县| 嘉鱼县| 甘泉县| 云霄县| 崇义县| 宜兰市| 瑞金市| 贺州市| 新津县| 安顺市| 和田市| 永靖县| 定边县| 华阴市| 页游| 四会市| 壤塘县| 开江县| 邢台县| 渭源县| 潼南县| 绵竹市| 瓦房店市| 汪清县| 万荣县|