PHP
Arrow functions (fn)
fn => ile kısa ve otomatik değişken yakalayan arrow function yazmayı öğrenirsin.
Arrow function: fn() =>
PHP 7.4'ten beri fn($x) => $x * 2 yazımıyla arrow function tanımlanır. Bu, anonim fonksiyonun kısa halidir.
İki büyük farkı var: birincisi, yalnızca tek bir ifade döndürür (return yazılmaz, otomatik döner). İkincisi, dış kapsamdaki değişkenleri otomatik yakalar; use gerekmez.
Örneğin $tax = 0.2; $f = fn($p) => $p * (1 + $tax); — $tax kendiliğinden içeri gelir.
Ne zaman arrow function?
Arrow function, kısa tek ifadeli dönüşlerde idealdir. fn($n) => $n * 2 yazımı, function ($n) { return $n * 2; }'den çok daha kısadır.
Dış kapsamdaki değişkenleri use ile elle yazmaya gerek yoktur; arrow function otomatik yakalar. Bu da uzun closure'ları okunur kılar.
Ama birden fazla ifade (atama, if, döngü) gerekiyorsa klasik function kullanmalısın. Arrow function yalnızca bir değer döndürür.
Uygulama array_map ile kareleri hesapla
[1, 2, 3] dizisinin her elemanının karesini array_map ile hesapla; fn($n) => $n * $n arrow function'ı kullan. Sonra her kareyi yeni satırda yazdır.
Örnek çözümü göster
$squares = array_map(fn($n) => $n * $n, [1, 2, 3]); yaz. Sonra foreach ($squares as $s) { echo $s . "\n"; } ile yazdır.
Örnek çözüm:
<?php
// array_map ve fn ile kareleri hesapla
$squares = array_map(fn($n) => $n * $n, [1, 2, 3]);
foreach ($squares as $s) {
echo $s . "\n";
}
Kendini test et
-
Arrow function ve closure farkı
- fn($x) => ...
- Arrow function
- function ($x) { ... }
- Anonim fonksiyon
- use ($x)
- Closure'a elle yakalama
- otomatik yakalama
- Arrow function özelliği
-
Arrow function ile ilgili hangisi doğrudur?
- use ile elle yakalama gerekir
- Birden fazla ifade içerebilir
- Dış kapsamdaki değişkenleri otomatik yakalar
- Yalnızca sayı döndürebilir
Cevabı göster
Dış kapsamdaki değişkenleri otomatik yakalar — Doğru. Arrow function dış kapsamdaki değişkenleri use gerekmeden otomatik yakalar.
-
Arrow function tanımını tamamla
<?php
$tax = 0.2;
$addTax = ____ ($price) => $price * (1 + $tax);
echo $addTax(100) . "\n";
Cevabı göster
<?php
$tax = 0.2;
$addTax = fn ($price) => $price * (1 + $tax);
echo $addTax(100) . "\n";
Sıradaki ders: callable türü