Menu
Coddy logo textTech

flatMap

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 29 / 56.

flatMap, her bir öğenin birden fazla sonuç ürettiği durumlar içindir. Closure bir dizi döndürür; flatMap bunların hepsini tek bir düz dizi halinde birleştirir.

let groups = [[1, 2, 3], [4, 5], [6]]
let all = groups.flatMap { $0 }
print(all)                       // [1, 2, 3, 4, 5, 6]

Closure içinde de gerçek işler yapabilirsiniz. Her bir değeri küçük bir diziyle eşlemek ve sonucu tek bir adımda düzleştirmek tipik kullanım durumudur:

let nums = [1, 2, 3]
let pairs = nums.flatMap { [$0, $0 * $0] }
print(pairs)                     // [1, 1, 2, 4, 3, 9]

map ile karşılaştırın: bu, düzleştirmek için başka bir adıma ihtiyaç duyacağınız küçük dizilerden oluşan bir dizi olan [[Int]] üretecekti. flatMap bu iki adımı tek bir adımda birleştirir.

challenge icon

Görev

Kolay

İki satır girdi okuyun:

  1. Virgülle ayrılmış tam sayılardan oluşan bir liste, nums
  2. Virgülle ayrılmış tam sayılardan oluşan bir liste, repeats (nums ile aynı uzunlukta)

Her bir i için, nums[i] değerini tam olarak repeats[i] kez tekrarlayın. Sonuçta oluşan düz diziyi , ile birleştirerek yazdırın. flatMap kullanın.

1. satırdaki 5,7,2 girdisi ve 2. satırdaki 3,1,2 girdisi için çıktı 5,5,5,7,2,2 olur.

Kendin dene

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let repeats = readLine()!.components(separatedBy: ",").map { Int($0)! }

// YAPILACAK: her bir (num, repeat) ikilisini Array(repeating:count:) içine flatMap ile yayın; "," ile birleştirin
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler