Özet - Closure ve callback
Closure, arrow function ve callable'la fonksiyonel filtre/map zinciri yazarsın.
Özet - Closure ve callback
Bu grupta closure'ların altı taşını öğrendin: function () {} anonim fonksiyon, use ($x) ile değişken yakalama, fn() => arrow function, callable tür bildirimi, higher-order fonksiyonlar ve bindTo ile bağlama.
Bunları birleştirince veriyi boru gibi akıtan özlü kod yazarsın: array_filter süzer, array_map dönüştürür, closure'lar içine dış kapsamdan değişken taşır.
Son görevde bu üçünü bir araya getiren bir zincir kuracaksın.
Uygulama Özet - Süz ve KDV ekle zinciri
$prices = [100, 250, 50, 400] olarak veriliyor. Önce array_filter ile 100'den büyük olanları süz; sonra array_map ve fn ile her birini 1.18 ile çarp (KDV ekle). Son olarak her fiyatı yeni satırda yazdır.
Örnek çözümü göster
$filtered = array_filter($prices, fn($p) => $p > 100); ile süz. $withTax = array_map(fn($p) => $p * 1.18, $filtered); ile KDV ekle. foreach ($withTax as $price) { echo $price . "\n"; } ile yazdır.
Örnek çözüm:
<?php
// Fiyatları süz ve KDV ekle
$prices = [100, 250, 50, 400];
$filtered = array_filter($prices, fn($p) => $p > 100);
$withTax = array_map(fn($p) => $p * 1.18, $filtered);
foreach ($withTax as $price) {
echo $price . "\n";
}
Kendini test et
-
Grubun altı taşını eşleştir
- function () {}
- Anonim fonksiyon
- use ($x)
- Değişken yakalar
- fn($n) => $n * 2
- Arrow function
- callable
- Tip bildirimi
- bindTo()
- $this bağlar
-
Bir dizinin her elemanını iki katına çıkarmak için en kısa yol hangisidir?
- foreach ile elle döngü
- array_push ile ekleme
- array_map ile arrow function
- for döngüsü ile yeniden yazma
Cevabı göster
array_map ile arrow function — Doğru. array_map(fn($n) => $n * 2, $arr) tek satırda her elemanı iki katına çıkarır.
-
array_filter ile çift sayıları süz
<?php $nums = [1, 2, 3, 4, 5]; $evens = array_filter($nums, ____); foreach ($evens as $n) { echo $n . "\n"; }Cevabı göster
<?php $nums = [1, 2, 3, 4, 5]; $evens = array_filter($nums, fn($n) => $n % 2 === 0); foreach ($evens as $n) { echo $n . "\n"; }