Ana içeriğe geç

Yüksek dereceli fonksiyon

İngilizcesi
Higher-Order Function
Türkçe karşılığı
üst düzey fonksiyon, yüksek mertebeden fonksiyon
Okunuşu
hayır ordır fankşın

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/higher-order-function

Kısaca

Yüksek dereceli fonksiyon, başka bir fonksiyonu argüman olarak alan, fonksiyon döndüren ya da ikisini de yapan fonksiyondur; davranış veri gibi taşınabilir.

Yüksek dereceli fonksiyon (higher-order function) nedir?

Yüksek dereceli fonksiyon, diğer fonksiyonlarla değer olarak çalışan her fonksiyondur: parametre olarak bir fonksiyon kabul eder, yeni bir fonksiyon döndürür ya da her ikisini yapar. Bu, fonksiyonların birinci sınıf değer olduğu, yani sayılar veya dizeler gibi değişkenlerde saklanabildiği, argüman olarak aktarılabildiği ve döndürülebildiği dillerde mümkündür. JavaScript, Python, Kotlin, Swift, Rust ve neredeyse tüm diğer modern diller bunu destekler.

En bilinen örnekler map, filter ve reduce gibi dizi yardımcılarıdır. Her biri döngüyü sizin yerinize halleder ve yalnızca her öğeye ne yapılacağını anlatan küçük bir fonksiyon ister: nasıl dönüştürüleceği, tutulup tutulmayacağı ya da nasıl birleştirileceği. Fonksiyon döndüren fonksiyonlar da yaygındır; örneğin fn'in her çağrıyı günlüğe yazan bir sürümünü döndüren bir withLogging(fn) sarmalayıcısı ya da özelleştirilmiş doğrulayıcılar üreten bir fabrika gibi.

Yüksek dereceli fonksiyon, değiştirilebilir bıçaklara sahip bir mutfak robotu gibidir: makine motoru ve kabı sağlar, taktığınız bıçak ise dilimleyip, rendeleyip ya da karıştıracağına karar verir. Bu, kodu daha kısa ve yeniden kullanılabilir yapar; çünkü genel mekanizma bir kez yazılır ve yalnızca değişen kısım dışarıdan verilir.

Yüksek dereceli fonksiyonlar sıklıkla callback'lerle karıştırılır. Callback, aktarılan fonksiyondur; yüksek dereceli fonksiyon ise onu alan fonksiyondur. Dolayısıyla items.map(double) örneğinde map metodu yüksek dereceli, double ise callback'tir. Yüksek dereceli bir fonksiyondan döndürülen fonksiyonlar genellikle closure'dır, çünkü onları oluşturan fonksiyonun değişkenlerini hatırlarlar.

Önemli noktalar

  • Yüksek dereceli fonksiyon, girdi olarak bir fonksiyon alır, bir fonksiyon döndürür ya da her ikisini yapar.
  • Birinci sınıf fonksiyonlar gerektirir; çoğu modern dil bunları destekler.
  • map, filter ve reduce klasik örneklerdir.
  • Aktarılan fonksiyon callback, onu alan fonksiyon ise yüksek derecelidir.

Örnek

Fonksiyon almak ve döndürmekjavascript
const prices = [12, 45, 7, 30];

// filter and map are higher-order: they take functions as arguments
const doubled = prices
  .filter((p) => p > 10)
  .map((p) => p * 2);

// A higher-order function that returns a new function
function multiplier(factor) {
  return (n) => n * factor;
}
const triple = multiplier(3);

console.log(doubled, triple(5)); // [24, 90, 60] 15

Sık sorulan sorular

Callback bir yüksek dereceli fonksiyon mudur?

Genellikle hayır. Callback aktarılan fonksiyondur, onu kabul eden fonksiyon ise yüksek derecelidir. Bir callback ancak kendisi de fonksiyon alıyor veya döndürüyorsa yüksek derecelidir.

Hangi diller yüksek dereceli fonksiyonları destekler?

JavaScript, TypeScript, Python, Kotlin, Swift, C#, Rust, Go ve tüm fonksiyonel diller dahil birinci sınıf fonksiyonlara sahip her dil. Java bu desteği Java 8'de lambda'lar ve fonksiyonel interface'ler aracılığıyla ekledi.

Döngüler yerine neden yüksek dereceli fonksiyonlar kullanılır?

Tekrarlayan döngü kodunu gizler ve her öğeye ne yapılacağını anlatmanıza olanak tanır; bu da çoğu zaman daha kısa ve okunması daha kolaydır. Düz döngüler yine de uygundur ve mantığın çok adımı olduğu ya da erken durması gerektiği durumlarda bazen daha açıktır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar