91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Swift中如何使用 - map 和 flatMap

發布時間:2020-11-05 18:22:50 來源:億速云 閱讀:324 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Swift中如何使用 - map 和 flatMap,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

map 和 flatMap 主要分在集合上的使用和在可選類型上的使用,下面分別來看下。

集合上使用 map 和 flatMap

先看如下的代碼:

func getInfos(by name: String) -> [String] {
 if name == "Jack" {
  return ["Male", "25", "New York"]
 } else if name == "Lucy" {
  return ["Female", "18", "London"]
 } else {
  return ["Unkown", "Unkown", "Unkown"]
 }
}

let names = ["Jack", "Lucy", "Nobody"]

let infos1 = names.map { getInfos(by: $0) }
print(infos1)

let infos2 = names.flatMap { getInfos(by: $0) }
print(infos2)

輸入是一個一維數組,轉換后 infos1 的結果是如下的一個二維數組,所以 map 后有兩層結構:

[["Male", "25", "New York"], ["Female", "18", "London"], ["Unkown", "Unkown", "Unkown"]]

輸入是一個一維數組,轉換后 infos2 的結果是如下的一個一維數組,所以 flatMap 后只有一層結構:

["Male", "25", "New York", "Female", "18", "London", "Unkown", "Unkown", "Unkown"]

map 在 Array 上的實現大致如下:

extension Array {
 func map<T>(_ transform: (Element) -> T) -> [T] {
  var result: [T] = []
  for x in self {
   result.append(transform(x))
  }
  return result
 }
}

flatMap 在 Array 上的實現大致如下:

extension Array {
 func flatMap<T>(_ transform: (Element) -> [T]) -> [T] {
  var result: [T] = []
  for x in self {
   result.append(contentsOf: transform(x))
  }
  return result
 }
}

可選類型上使用 map 和 flatMap

如下代碼中,輸入是 stringNumbers.first,其類型是 String&#63;

  • 轉換后 x 的類型是 Int&#63;&#63;,所以 map 后有兩層 Optional
  • 轉換后 y 的類型是 Int&#63;,所以 flatMap 后只有一層 Optional
let stringNumbers = ["1", "2", "3", "foo"]
let x = stringNumbers.first.map { Int($0) } // Optional(Optional(1))
let y = stringNumbers.first.flatMap { Int($0) } // Optional(1)

map 在 Optional 上的實現大致如下:

extension Optional {
 func map<U>(transform: (Wrapped) -> U) -> U&#63; {
  if let value = self {
   return transform(value)
  }
  return nil
 }
}

flatMap 在 Optional 上的實現大致如下:

extension Optional {
 func flatMap<U>(transform: (Wrapped) -> U&#63;) -> U&#63; {
  if let value = self, let transformed = transform(value) {
   return transformed
  }
  return nil
 }
}

看完上述內容,你們對Swift中如何使用 - map 和 flatMap有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

迁安市| 察隅县| 上饶县| 革吉县| 阳西县| 贵溪市| 开鲁县| 瓦房店市| 宜君县| 城市| 朝阳市| 图木舒克市| 永丰县| 大竹县| 喀喇| 嵊州市| 红安县| 井研县| 新巴尔虎左旗| 长顺县| 乌什县| 屏东县| 青河县| 扶余县| 青冈县| 临江市| 昭觉县| 明光市| 广灵县| 紫阳县| 株洲县| 濮阳县| 阿克| 万年县| 保定市| 砚山县| 博兴县| 黎城县| 怀化市| 油尖旺区| 新余市|