Menu
CoddyTech

Method reduce

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 62 dari 78.

reduce() menggabungkan semua elemen dalam sebuah array menjadi satu nilai: jumlah, hasil kali, elemen terbesar, sebuah kalimat.

var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)
10

Fungsi ini membutuhkan dua argumen: sebuah fungsi dan nilai awal, yaitu 0. Fungsi tersebut menerima hasil sementara, yang disebut akumulator (acc), dan elemen berikutnya. Nilai yang dikembalikannya menjadi akumulator baru:

  • acc dimulai dari 0
  • 0 + 1 adalah 1, 1 + 2 adalah 3, 3 + 3 adalah 6, 6 + 4 adalah 10
  • setelah elemen terakhir, reduce() mengembalikan akumulator: 10

Untuk suatu hasil kali, mulai dari 1: numbers.reduce(func(acc, n): return acc * n, 1) adalah 24.

Tanpa nilai awal, elemen pertama menjadi nilai awal dan fungsi dijalankan mulai dari elemen kedua. Cara ini cocok untuk mencari elemen terbesar:

var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9

Pada array kosong tanpa nilai awal, reduce() mengembalikan null, jadi berikan nilai awal jika array bisa kosong.

Accumulator dapat memiliki tipe apa pun. Dengan nilai awal "", ini membangun string dari huruf pertama:

var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # go
challenge icon

Tantangan

Mudah

Program membaca satu baris bilangan bulat yang dipisahkan dengan koma dan menyimpannya dalam array numbers. Bagian ini sudah ditulis.

Gunakan reduce() untuk setiap operasi berikut, lalu cetak tiga baris:

  1. jumlah semua bilangan
  2. hasil kali semua bilangan
  3. bilangan terbesar (tulis perbandingannya di dalam lambda, jangan panggil max())

Selalu ada setidaknya satu bilangan. Untuk input 3,7,2,8,4, output-nya adalah:

24
1344
8

Coba sendiri

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# Cetak jumlah, hasil kali, dan bilangan terbesar, masing-masing dengan reduce()
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online