Function
Membuat function, parameter posisi/opsional/bernama, required, nilai default, arrow function, function sebagai nilai, closure, dan scope.
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'
| Jenis | Tulisan | Dipanggil |
|---|---|---|
| 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 parameterrequired.The parameter 'x' can't have a value of 'null' because of its type→ parameter bernama tanparequireddan 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.