欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Swift

當前位置:主頁 > 軟件編程 > Swift >

Swift枚舉的一些小用法總結

來源:本站原創(chuàng)|時間:2020-01-11|欄目:Swift|點擊: 次

前言

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

例如,我們最常見的 optional:

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

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

關聯(lián)值

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

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

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?) { }
}

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

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)
    }
  }
}

利用枚舉關聯(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é)議,并實現(xiàn)協(xié)議的一些屬性及方法:

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

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。

上一篇:沒有了

欄    目:Swift

下一篇:Swift中添加雙擊手勢識別器

本文標題:Swift枚舉的一些小用法總結

本文地址:http://mengdiqiu.com.cn/a1/Swift/11921.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權所有