Sobes.tech
Junior — Middle

Programlama dillerinde flatMap ve compactMap işlemleri arasındaki farkları açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift gibi programlama dillerinde, flatMap ve compactMap koleksiyonları dönüştürmek için kullanılır, ancak farklı amaçlara sahiptir:

  • flatMap, koleksiyonun öğelerini koleksiyonlara dönüştürmek ve ardından sonucu tek seviyeye "düzleştirmek" (flatten) için kullanılır. Örneğin, her öğe bir diziye dönüştürülürse, flatMap bu dizileri tek bir diziye birleştirir.

  • compactMap, koleksiyonun öğelerini dönüştürürken aynı zamanda tüm nil (veya eksik) değerleri atar. Bu, dönüşümün opsiyonel bir değer döndürebileceği durumlarda ve yalnızca boş olmayan sonuçlara sahip bir dizi elde etmek istendiğinde kullanışlıdır.

Swift'te örnek:

let numbers = ["1", "2", "three", "4"]

// compactMap, dizeleri Int'e dönüştürür ve sayısal olmayanları atar
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap ile diziler
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Bu şekilde, compactMap filtreler ve dönüştürür, flatMap ise iç içe dizileri dönüştürmeden sonra birleştirir.