0Pricing
Lua Academy · Ders

map, filter, reduce

Üst düzey yardımcılar oluşturun.

map, filter, reduce, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Büyük Üçlü

Eşleme, filtreleme ve indirgeme, işlevsel liste işlemenin temel araçlarıdır. Her biri bir liste ve bir işlev alır; döngüyü elle yazmadan bir sonuç döndürür.

Lua bunları yerleşik olarak sunmaz; ancak yazmaları kısadır ve üst düzey işlevlerin nasıl çalıştığını gösterirler.

Eşleme: Her Öğeyi Dönüştürme

Eşleme, her öğeye bir işlev uygular ve sonuçları yeni bir listede toplar. Özgün liste değiştirilmeden kalır.

Aktardığınız işlev dönüşümü belirlediğinden tek bir map işlevi ikiyle çarpma, karesini alma veya öğe bazında başka herhangi bir değişikliği gerçekleştirebilir.

local function map(t, f)
  local out = {}
  for i, v in ipairs(t) do
    out[i] = f(v)
  end
  return out
end

local r = map({1, 2, 3}, function(x) return x * x end)
print(table.concat(r, ", "))

Eşleme Uzunluğu Korur

Eşleme her zaman girdiyle aynı sayıda öğe içeren bir liste döndürür. Her öğe tam olarak bir çıktı öğesine dönüştürülür.

Öğeleri çıkarmanız gerekiyorsa bu eşlemenin değil, filtrelemenin görevidir.

local function map(t, f)
  local out = {}
  for i, v in ipairs(t) do out[i] = f(v) end
  return out
end

local names = {"ada", "lin", "sam"}
local caps = map(names, string.upper)
print(table.concat(caps, " "))
print(#caps)

Filtreleme: Bazı Öğeleri Tutma

Filtreleme, bir koşulun doğru döndürdüğü öğeleri tutar. Koşul, mantıksal bir değer döndüren işlevdir.

Sonuç, özgün listeden daha kısa olabilir; ancak hiçbir zaman daha uzun olmaz.

local function filter(t, pred)
  local out = {}
  for _, v in ipairs(t) do
    if pred(v) then out[#out + 1] = v end
  end
  return out
end

local evens = filter({1,2,3,4,5,6}, function(x) return x % 2 == 0 end)
print(table.concat(evens, ", "))

Filtreleme Sırayı Korur

Filtreleme listeyi sırayla dolaşır ve tutulan her öğeyi sona ekler; böylece kalan öğeler özgün sıralarını korur.

Dizin olarak #out + 1 kullanmak sonucu arada boşluk olmayan bir dizi hâline getirir; Lua bunu düzgün bir dizi olarak ele alır.

local function filter(t, pred)
  local out = {}
  for _, v in ipairs(t) do
    if pred(v) then out[#out + 1] = v end
  end
  return out
end

local long = filter({"hi", "hello", "yo", "howdy"},
  function(s) return #s > 2 end)
print(table.concat(long, ", "))

İndirgeme: Tek Bir Değerde Birleştirme

İndirgeme (katlama olarak da adlandırılır), bir listeyi tek bir değere indirger. Bir biriktirici tutar ve işlevinizi kullanarak bunu her öğeyle birleştirir.

Bir başlangıç değeri ve birleştirme işlevi sağlarsınız; indirgeme de biriktiriciyi her öğe boyunca aktarır.

local function reduce(t, f, acc)
  for _, v in ipairs(t) do
    acc = f(acc, v)
  end
  return acc
end

local sum = reduce({1,2,3,4}, function(a, x) return a + x end, 0)
print(sum)

İndirgemeyle En Büyük Değeri Bulma

İndirgeme yalnızca aritmetik işlemlerle sınırlı değildir. Birleştirici, değerleri karşılaştırıp her adımda büyük olanı tutabilir.

Biriktiriciyi ilk öğeden veya çok küçük bir sayıdan başlatmak, indirgeme kullanarak en büyük değeri temiz biçimde bulmanızı sağlar.

local function reduce(t, f, acc)
  for _, v in ipairs(t) do acc = f(acc, v) end
  return acc
end

local product = reduce({1,2,3,4,5}, function(a, x) return a * x end, 1)
print(product)

En Büyük Değere İndirgeme

İndirgeme yalnızca aritmetik işlemlerle sınırlı değildir. Birleştirici, değerleri karşılaştırıp her adımda büyük olanı tutabilir.

Biriktiriciyi ilk öğeden veya çok küçük bir sayıdan başlatmak, indirgeme kullanarak en büyük değeri temiz biçimde bulmanızı sağlar.

local function reduce(t, f, acc)
  for _, v in ipairs(t) do acc = f(acc, v) end
  return acc
end

local max = reduce({3, 8, 2, 11, 6},
  function(a, x) if x > a then return x else return a end end, -math.huge)
print(max)

Birlikte Zincirleme

Asıl güç, bu üçünü zincirlediğinizde ortaya çıkar. Filtreleme veriyi daraltır, eşleme dönüştürür, indirgeme ise özetler.

Her aşama küçük ve anlaşılır bir adımdır; birlikte karmaşık bir elle yazılmış döngünün yerini alırlar.

local function filter(t, p) local o={} for _,v in ipairs(t) do if p(v) then o[#o+1]=v end end return o end
local function map(t, f) local o={} for i,v in ipairs(t) do o[i]=f(v) end return o end
local function reduce(t, f, a) for _,v in ipairs(t) do a=f(a,v) end return a end

local nums = {1,2,3,4,5,6}
local r = reduce(map(filter(nums, function(x) return x%2==0 end),
  function(x) return x*x end), function(a,x) return a+x end, 0)
print(r)

Özgün Veriler Güvende Kalır

Eşleme ve filtreleme her zaman yeni tablolar oluşturur ve girdiyi hiçbir zaman değiştirmez. Bu, veri işlem hatlarını öngörülebilir kılar: her aşamadan sonra önceki verilere hâlâ erişebilirsiniz.

İndirgeme de listeye dokunmaz; yalnızca birleştirilmiş sonucu döndürür.

Her Liste İçin Geneldir

İşlev bir parametre olduğundan bu araçlar her veriyle çalışır. Aynı map işlevi dizeleri büyük harfe dönüştürebilir, fiyatları ölçekleyebilir veya kayıtları biçimlendirebilir.

Döngüyü bir kez yazıp farklı işlevler aktarmak, birinci sınıf işlevlerin bu kadar yararlı olmasının tam nedenidir.

local function map(t, f) local o={} for i,v in ipairs(t) do o[i]=f(v) end return o end

local prices = {10, 20, 30}
local withTax = map(prices, function(p) return p * 1.18 end)
print(table.concat(withTax, ", "))

Hızlı Kontrol

Bu işlemlerin liste uzunluğunu nasıl etkilediğini düşünün.

Özet

Eşleme her öğeyi dönüştürür ve uzunluğu korur, filtreleme bir koşulu geçen öğeleri tutar, indirgeme ise biriktirici kullanarak listeyi tek bir değere indirger.

Filtreleme, eşleme ve indirgemeyi zincirlemek, elle döngü yazmadan anlaşılır veri işlem hatları oluşturur; özgün tablolar da değişmeden kalır.

Sıkça Sorulan Sorular

“map, filter, reduce” dersi ücretsiz mi?

Evet — “map, filter, reduce” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“map, filter, reduce” dersinde ne öğreneceğim?

Üst düzey yardımcılar oluşturun. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“map, filter, reduce” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Değer Olarak İşlevler
  2. map, filter, reduce
  3. Kısmi Uygulama
  4. İşlevleri Birleştirme
← Lua Academy Sayfasına Dön