Menu
CoddyTech

Fungsi Lambda Bagian 2

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

Lambda satu baris dapat memilih hasilnya dengan operator ternary, value_if_true if condition else value_if_false:

var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # Adult

Untuk lebih dari dua kasus, rangkai ekspresi ternary kedua setelah else, atau tulis lambda sebagai blok dengan if dan elif:

var grade = func(score):
	if score == 100:
		return "Perfect"
	elif score >= 60:
		return "Pass"
	return "Fail"
print(grade.call(75)) # Pass

Karena lambda adalah sebuah nilai, kamu bisa meneruskannya ke fungsi. Deklarasikan parameter dengan tipe Callable dan jalankan dengan call():

func apply_twice(fn: Callable, value):
	return fn.call(fn.call(value))
print(apply_twice(func(n): return n + 3, 1)) # 7

Fungsi bernama dapat diteruskan dengan cara yang sama: tulis namanya tanpa tanda kurung, seperti pada apply_twice(double, 5).

method bawaan juga menerima fungsi. sort_custom() mengurutkan array menggunakan lambda yang menerima dua elemen dan mengembalikan true jika elemen pertama harus berada di urutan pertama:

var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]

Lambda dapat membaca variabel lokal di sekitarnya, tetapi menyalin nilainya saat dibuat. Mengubah variabel tersebut setelahnya tidak memengaruhi lambda, dan menetapkan nilai ke variabel itu di dalam lambda tidak mengubah variabel di luar.

challenge icon

Tantangan

Mudah

Program membaca bilangan bulat. Buat lambda dan simpan dalam variabel bernama categorize_number. Lambda ini menerima satu bilangan dan mengembalikan:

  • Positive jika bilangan lebih besar dari 0
  • Zero jika bilangan adalah 0
  • Negative jika bilangan kurang dari 0

Panggil lambda tersebut dengan bilangan yang kamu baca, lalu cetak hasilnya. Untuk input 10, output-nya adalah:

Positive

Coba sendiri

extends Node

func _ready():
	var number := int(OS.read_string_from_stdin())
	# Buat lambda categorize_number di sini

	# Panggil lambda itu dengan number, lalu cetak hasilnya
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