Tekrar hoş geldiniz.
Filtre hakkında konuşalım.
Şimdi, ismine bakarak ne işe yaradığını tahmin etmelisiniz.
Bizim için bir şeyleri filtreliyor.
Yani harita ile her zaman aynı sayıda öğeyi geri alıyoruz, değil mi?
Üç maddemiz var ve üç maddeyi geri aldık.
Her bir öğenin haritasını çıkardık.
Filtre ile bazen verdiğimizden daha azını alabiliriz.
Bazı sonuçları filtreliyoruz.
O halde iki ile çarpma yerine yeni bir fonksiyon oluşturalım.
Bir fonksiyon oluşturmak istiyorum.
Ve bu işlev, öğelere ne yapacağız?
Diyelim ki öğeler tek ise kontrol ediliyor.
Yani, hey, bu sayılar tek mi diyeceğiz ve sadece tek sayıları döndüreceğiz.
Kontrol et.
Odd bir ürün alacak.
Ve bu maddeye göre hareket edilecek.
Ve bir kez daha, bir şeyi iade etmek zorundayız.
Neyi iade edeceğiz?
Filtre işlevi, filtrelenmesi gerekip gerekmediğine dair doğru ve yanlış bir değer ya da bir Boolean değeri
almaya çalışacaktır.
Dolayısıyla, bir sayının tek olup olmadığını kontrol etmek istiyorsak, modulo iki öğesini söyleyebiliriz çünkü modulo iki, sayıyı
ikiye bölecektir.
Ve eğer sıfıra eşitse, o zaman çifttir.
Doğru.
Bu yüzden sıfıra eşit olmadığını söyleyebilirim.
Yani eğer kalan sıfıra eşit değilse, tek olacaktır.
Ve bunu basitçe iade ediyoruz.
Yine, bu bir zorbalık ifadesi olarak değerlendirilecek ve zorbalık ifadesine dayalı olarak filtre,
doğruysa bunu listede tutacağım diyecektir.
Eğer değilse, onu kaldıracağım ya da yeni listeye eklemeyeceğim.
Bu yüzden harita yerine bunu kontrol edelim, filtre yapalım ve burada kontrol yapalım.
Tuhaf.
Ya da.
Ne var biliyor musun?
Bu ismi sevmedim.
Hadi yapalım.
Sadece garip.
İşte böyle.
Eğer bunu çalıştırırsam.
Şuna bak.
Tüpü filtreledim ve çıkardım çünkü bu çift sayı.
Tekrar.
Burada fonksiyonu nasıl çağırmadığıma dikkat edin çünkü filtre bir fonksiyonu ya da fonksiyon imzası dediğimiz şeyi
kabul eder.
Hey, bana sadece hangi işlemi yapmak için hangi bellek alanına gitmem gerektiğini nerede bulabileceğimi söyle.
Ve şöyle diyecek: Hey, bana verileri ver ve ben de gidip bu işlevi her bir öğe üzerinde çalıştırayım.
Yani bire gittiğimizde, bu fonksiyonu argüman olarak bir ile çalıştıracak.
Bir bölü iki.
Bu bize kesinlikle sıfır kalan vermiyor.
Yani bu geri dönecek.
Doğru.
Bu da ikiye ulaştığımızda oluşturacağımız yeni listeye ekleyeceğim anlamına geliyor,
çünkü bu false döndürecek.
Listeye eklemeyecek.
Yine diyelim ki elimizde bir kullanıcı listesi var.
Bu durumda, A adıyla başlayan kullanıcılara göre filtreleme yapmak isteyebiliriz.
Tüm kullanıcı adlarını filtrelemek için filtre işlevini kullanabiliriz.
Ve sadece a ile başlayan harfli kullanıcı adlarını içeren yeni bir listeye sahip olun.
Bir başka çok kullanışlı işlev.
Ve gördüğünüz gibi, her şeyi saf tuttuk.
Bizim için yeni bir liste oluşturur.
Orijinal listeyi değiştirmez.
Dolayısıyla bu işlevsel paradigmayı aklımızda tutuyoruz.
Ve bir kez daha, hem harita hem de filtre ile ilgili güzellik, işlevlerin ne kadar basit hale geldiğine bakın.
Her şey sadece güzel ve basittir ve dikkat edin, biraz daha karmaşık hale gelebilirler.
Ama bilmemiz gereken tek şey, Hey, ürüne ne yapmalıyım ve neyi iade etmeliyim?
Endişe duydukları tek şey bu.
Her şeyi yapmaya çalışan bu devasa, devasa işlevlere sahip olmak yerine.
Tamam.
Şimdi zip hakkında konuşalım.