Menu
CoddyTech

Closure dan 'use'

Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 2 dari 68.

Secara default, fungsi anonim hanya dapat mengakses variabel yang diteruskan kepadanya sebagai parameter. Namun, bagaimana jika kamu perlu agar closure-mu dapat mengakses variabel dari lingkup sekitarnya? Di sinilah kata kunci use digunakan.

Kata kunci use memungkinkan closure “menangkap” variabel dari cakupan induknya dan menggunakannya di dalam fungsi:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Output: Welcome, Bob!
?>

Perhatikan bahwa $message didefinisikan di luar fungsi, tetapi dengan menyertakan use ($message) setelah daftar parameter, closure dapat mengakses dan menggunakan variabel tersebut. Kamu dapat menangkap beberapa variabel dengan memisahkannya menggunakan koma: use ($var1, $var2).

Fitur ini membuat closure jauh lebih bermanfaat, sehingga closure dapat bekerja dengan data dari konteks sekitarnya sambil tetap mempertahankan fleksibilitas fungsi anonim.

challenge icon

Tantangan

Mudah

Buat fungsi anonim yang menangkap persentase diskon dari cakupan di sekitarnya menggunakan kata kunci use. Fungsi tersebut harus menerima harga sebagai parameter dan mengembalikan harga akhir setelah diskon diterapkan.

Kamu akan menerima dua input: persentase diskon dan harga awal. Baca kedua input, buat closure yang menangkap persentase diskon, panggil closure dengan harga, lalu cetak harga akhir setelah diskon.

Format input: Dua baris: baris pertama berisi persentase diskon (angka), baris kedua berisi harga awal (angka yang dapat memiliki desimal)

Output yang diharapkan: Harga akhir setelah diskon diterapkan

Coba sendiri

<?php
// Baca input
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: Buat fungsi anonim yang menggunakan 'use' untuk menangkap persentase diskon
// Fungsi tersebut harus menerima parameter harga dan mengembalikan harga akhir setelah diskon


// TODO: Panggil closure dengan harga dan simpan hasilnya


// Tampilkan harga akhir sebagai output
echo $finalPrice;
?>
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 PHP online