reduce Metodu
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 62 / 78.
reduce(), bir dizinin tüm öğelerini tek bir değerde birleştirir: bir toplam, bir çarpım, en büyük öğe, bir cümle.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10İki bağımsız değişken alır: bir işlev ve burada 0 olan bir başlangıç değeri. İşlev, o ana kadarki sonucu ( biriktirici olarak adlandırılır: acc) ve sonraki öğeyi alır. Döndürdüğü değer yeni biriktirici olur:
accdeğeri0ile başlar0 + 1değeri1,1 + 2değeri3,3 + 3değeri6,6 + 4değeri10olur- son öğeden sonra
reduce(), biriktiriciyi döndürür:10
Bir çarpım için 1 ile başla: numbers.reduce(func(acc, n): return acc * n, 1) sonucu 24 eder.
Başlangıç değeri olmadan, ilk öğe başlangıç olur ve işlev ikinci öğeden itibaren çalışır. Bu, en büyük öğeyi bulmak için uygundur:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Başlangıç değeri olmayan boş bir dizide reduce(), null döndürür; bu nedenle dizi boş olabiliyorsa bir başlangıç değeri verin.
Akümülatör herhangi bir türde olabilir. Başlangıç değeri "" olduğunda, bu işlem ilk harflerden bir String oluşturur:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goGörev
KolayProgram, virgülle ayrılmış tam sayılardan oluşan bir satırı okur ve bunları numbers dizisinde saklar. Bu kısım zaten yazılmıştır.
Her biri için reduce() kullanarak üç satır yazdır:
- sayıların toplamı
- sayıların çarpımı
- en büyük sayı (karşılaştırmayı lambda içinde yaz;
max()çağırma)
Her zaman en az bir sayı vardır. 3,7,2,8,4 girdisi için çıktı şöyledir:
24
1344
8Kendin dene
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Toplamı, çarpımı ve en büyük sayıyı, her birini reduce() kullanarak yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi