Function

Membuat function, parameter posisi/opsional/bernama, required, nilai default, arrow function, function sebagai nilai, closure, dan scope.

Part 5 dari 20 ± 50 menit Gratis

Function: potongan kode yang diberi nama

Function membungkus langkah-langkah yang sering dipakai agar bisa dipanggil berulang. Tulis sekali, pakai di mana saja.

int tambah(int a, int b) {
  return a + b;
}

void main() {
  int hasil = tambah(3, 4);
  print(hasil);          // 7
}

Susunannya: tipeKembalian namaFunction(parameter) { ... }. Function yang tidak mengembalikan apa pun bertipe void.

Arrow function

Jika isi function hanya satu ekspresi, tulis dengan =>:

int kuadrat(int x) => x * x;
bool genap(int n) => n % 2 == 0;
void sapa(String nama) => print('Halo, $nama!');

Parameter bernama (named)

Parameter dalam kurung kurawal { } dipanggil dengan menyebut namanya. Kode jadi mudah dibaca, apalagi bila parameternya banyak. Ini gaya yang sangat umum di Flutter.

String buatSalam({required String nama, String sapaan = 'Halo'}) {
  return '$sapaan, $nama!';
}

buatSalam(nama: 'Budi');                       // Halo, Budi!
buatSalam(nama: 'Ani', sapaan: 'Selamat pagi'); // urutan bebas
  • required — wajib diisi.
  • = nilai — nilai bawaan bila tidak diisi.
  • Tanpa keduanya, tipenya harus nullable (String? catatan).

Parameter posisi opsional

Dalam kurung siku [ ], boleh tidak diisi:

String gabung(String a, [String b = '']) => '$a$b';
gabung('Ha');         // 'Ha'
gabung('Ha', 'lo');   // 'Halo'
JenisTulisanDipanggil
Posisi wajib(int a, int b)f(1, 2)
Posisi opsional(int a, [int b = 0])f(1)
Bernama({required int a, int b = 0})f(a: 1)

Function adalah nilai

Di Dart function adalah objek: bisa disimpan di variabel, dikirim sebagai argumen, dan dikembalikan dari function lain.

int Function(int) gandakan = (x) => x * 2;
print(gandakan(5));                       // 10

void ulang(int kali, void Function() aksi) {
  for (int i = 0; i < kali; i++) {
    aksi();
  }
}
ulang(3, () => print('Hai'));            // mencetak Hai 3 kali

var angka = [1, 2, 3];
print(angka.map((n) => n * 10).toList());  // [10, 20, 30]

Function tanpa nama seperti (n) => n * 10 disebut lambda atau anonymous function. Kamu akan sering menemuinya bersama map, where, dan callback.

Closure

Function bisa "mengingat" variabel di sekitarnya:

Function() buatPenghitung() {
  int hitung = 0;
  return () => ++hitung;
}

var next = buatPenghitung();
print(next());   // 1
print(next());   // 2

Scope

Variabel hanya hidup di dalam blok { } tempat ia dibuat. Variabel di dalam function tidak terlihat dari luar, dan sebaliknya variabel top-level bisa dipakai di mana saja dalam berkas.

Menulis function yang baik

  • Beri nama kata kerja yang jelas: hitungTotal, cekEmail.
  • Satu function, satu tugas.
  • Parameter lebih dari 3? Pertimbangkan parameter bernama.
  • Selalu tulis tipe parameter dan kembalian pada function publik.

Error umum

  • The named parameter 'x' is required, but there's no corresponding argument. → lupa mengisi parameter required.
  • The parameter 'x' can't have a value of 'null' because of its type → parameter bernama tanpa required dan tanpa default; beri default atau jadikan nullable.
  • This function has a return type of 'int', but doesn't end with a return statement. → ada jalur kode yang tidak mengembalikan nilai.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X