Fonksiyonlu Tablolar
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 1 / 70.
Lua'da tablolar inanılmaz derecede çok yönlüdür. Veri depolamanın ötesinde, fonksiyonları da tutabilirler. Bu, ilgili işlemleri bir araya getirmenize olanak tanıyarak kodunuzun düzenli ve yönetilmesinin kolay kalmasını sağlar.
Bir fonksiyonu bir tablonun içine yerleştirmek için, onu tıpkı diğer herhangi bir değer gibi bir anahtara atamanız yeterlidir:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- Çıktı: Hello, AliceFonksiyonu ayrıca tanımlayabilir ve ardından tabloya ekleyebilirsiniz:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endVeya bu daha temiz kısa yazım sözdizimini kullanın:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endHer üç yaklaşım da aynı sonucu üretir. Fonksiyonu nokta notasyonunu kullanarak çağırırsınız: myTable.greet("Alice"). Fonksiyonları verilerle paketleyen bu kalıp, Lua'da nesne yönelimli programlamanın temelidir.
Görev
KolayDört aritmetik fonksiyon içeren calculator adında bir tablo oluşturun:
add(a, b)-avebtoplamını döndürürsubtract(a, b)-aeksibsonucunu döndürürmultiply(a, b)-avebçarpımını döndürürdivide(a, b)-abölübsonucunu döndürür
Üç girdi alacaksınız:
- Bir işlem adı (şunlardan biri:
add,subtract,multiply,divide) - Birinci sayı
- İkinci sayı
İşlem adına göre calculator tablonuzdan uygun fonksiyonu çağırın ve sonucu yazdırın.
Kopya kağıdı
Lua'da tablolar, verilerin yanı sıra fonksiyonları da saklayabilir. Bir tabloya fonksiyon eklemek için onu bir anahtara atayın:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- Çıktı: Hello, AliceFonksiyonları ayrıca tanımlayıp tabloya da ekleyebilirsiniz:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endVeya kısa yazım sözdizimini kullanın:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endTablo fonksiyonlarını nokta notasyonu kullanarak çağırın: myTable.greet("Alice")
Kendin dene
-- Girdileri oku
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- YAPILACAK: Dört fonksiyonlu bir hesap makinesi tablosu oluşturun:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- YAPILACAK: İşlem adını kullanarak hesap makinesi tablosundan uygun fonksiyonu çağırın
-- ve sonucu yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Object Oriented Programming bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi