Selamlar, Yüksek mertebeli olan Map, Flatmap, Compactmap, Filter ve Reduce işlemleri nedir? Nerelerde kullanılır? Bunları sizlere güzel bir şekilde anlatmayı hedefliyorum 🙂 iOS gelişitiriyorsanız eğer bunlara ihtiyacınız olacak 🙂
Kodları Github’ta görmek için tıklayın!
Girişten önce son çıkış: Diziler v0.1
Şehir isimleri uygulaması yapalım hemen. Python dilinden aşina olduğum yapı swift’te de mevcuttu. Öncelikle yeni bir sehirler dizisi oluşturdum, for döngüsüyle index’i alıp sehirler dizindeki index indisini büyütüp atadım. Klasik basit bir dizi ve döngü diyebiliriz. Hiç sorun yok değil mi? Evet yok 🙂 Ama daha kolaylaştırabileceğiz ileride.
Hadi kısaltalım :Map v1.0
- Map en çok kullanılan fonksiyonlardan birisi, kısacık 🙂
- Map ile flatmap farkı çok boyutlu nil değerine göre işlem yapılması bunu uygulamaları olarak anlatacağım.
- Şimdi normal for döngüsüyle yaptığımız işlemi Map ile yapalım. Görseli incelemeye başlamadan söyleyim, $0 tüm elemanları geziyor.
Sadece yazdırmak veya fonksiyon içerisinde kullanmak isterseniz yukarıdaki gibi yapabilirsiniz. Görselleri önceden hazırladığım için var’ı let yapabilirsiniz 🙂 2 satırda bu işlemi yapabiliriz.
Hadi karmaşık işlere girelim yavaştan: Flatmap v1.1
- Matris yapısında olan dizimiz varsa, yani dizi içerisinde dizi varsa bunların birleştirilmesinden sorumludur arkadaşımız.
- Kendisini ve üstün görevinden ötürü teşekkür ediyoruz 🙂 Sonuçta döngülerden kurtuluyoruz.
- Hadi örneğimize geçelim.
- Çorumlu değilim görsellerdeki Çorum’un benimle bağı yok 🙂
Ama bir sorun var değil mi? Evet evet var, nil değerler bizim için şuan sorun teşkil ediyor. Hadi bunlardan kurtulalım. Ama bunun için 3.fonksiyonumuz devreye giriyor, Compactmap.
Yok et (nil) : CompactMap v1.2
- Compactmap map için nil ve olmayan değerlerini yok sayar ve yeni işlemi tamamlar. Ama map gibi içerisinde print kullanamıyoruz.
- Görseldeki gibi dizinin 3.indisinde bulunan nil değeri artık yok. Yazılmadı bile. 🙂
Birleştir ve Yok et: Compactmap + Flatmap v1.3
Her ikisinin birbirinden farklı özelliği var. Şimdi bu ihtiyaçlarımıza göre dizilerimizi birleştirip olmayan değerleri aradan çıkartalım.
Hem birleştirdik hem birleştirdik hem nil değerleri yok ettik 🙂
Filtreleyelim : Filter v2.0
- Filter fonksiyonu ile koşulumuza uyanları alırız. Mesela sayıları mod’una göre alabiliriz, stringleri içerdiği kelimelere göre filtreleyebiliriz. Hadi yapalım.
- Karakter sayısı 5 ten büyük olan ve N harfi içeren şehirleri listeledik.
Tek parça yapalım aslanım: Reduce v2.1
- Reduce fonksiyonu elimizdeki dizinin elemanlarını tek bir veri olarak döndürür. Mesela integer dizisiyse hepsini toplayabiliriz.
Basit ama çok kullanışlı fonksiyonları görmüş oldunuz 🙂 Takıldığınız ve merak ettiğiniz herhangi bir yerde yorum atabilirsiniz 🙂
Wow