Masukkan Password
33 3.4 Arrow Function in Dart Programming Language | Functions | Learn Dart Language | Dart Course
Di materi ini kita masuk ke Arrow Function di Dart. Konsepnya sebenarnya cukup sederhana: kalau isi function hanya satu expression/baris, kita bisa menulisnya dengan sintaks yang lebih singkat menggunakan =>.
Catatan kecil: caption menulis “DOT”, yang dimaksud adalah Dart.
1. Apa itu Arrow Function?
Arrow function adalah bentuk singkat (shorthand syntax) untuk menulis function yang hanya memiliki satu expression.
Bentuk function biasa:
void sayHello() {
print("Hello");
}
Bisa ditulis menjadi:
void sayHello() => print("Hello");
Perhatikan perbedaannya:
Function biasa
void sayHello() {
print("Hello");
}
Arrow function
void sayHello() => print("Hello");
Hasilnya sama-sama:
Hello
Jadi, arrow function bukan jenis function yang benar-benar berbeda. Lebih tepatnya, arrow function adalah cara penulisan function yang lebih ringkas.
2. Kenapa namanya “Arrow”?
Karena menggunakan simbol:
=>
Simbol tersebut bisa kita baca secara sederhana sebagai:
“function ini menghasilkan/menjalankan expression berikut.”
Contoh:
void sayHello() => print("Hello");
Bisa kita pahami seperti:
sayHello()
↓
print("Hello")
3. Function biasa bisa memiliki banyak statement
Misalnya kita punya function:
void myFunction() {
print("Hello");
print("My name is Budi");
print("I am learning Dart");
}
Di dalam {} ada tiga statement:
print("Hello");
print("My name is Budi");
print("I am learning Dart");
Karena ada beberapa statement, kita menggunakan function biasa.
void myFunction() {
print("Hello");
print("My name is Budi");
print("I am learning Dart");
}
Tidak bisa kita ubah begitu saja menjadi:
void myFunction() => print("Hello");
// hanya satu expression
karena dua print lainnya hilang.
4. Kapan menggunakan Arrow Function?
Aturan sederhananya:
Kalau function hanya memiliki satu expression, kita bisa menggunakan arrow syntax.
Misalnya:
void sayHello() {
print("Hello");
}
Karena hanya ada satu expression:
print("Hello");
bisa disingkat menjadi:
void sayHello() => print("Hello");
5. Bagian penting: => bukan berarti hanya satu baris secara visual
Ini sedikit penting untuk dipahami.
Materi mengatakan arrow function digunakan ketika function hanya memiliki one expression.
Jadi lebih tepat mengatakan:
Arrow function digunakan ketika function hanya memiliki satu expression.
Contohnya:
int add(int a, int b) => a + b;
Expression-nya adalah:
a + b
Walaupun hasil akhirnya berupa sebuah nilai.
6. Arrow Function dengan return
Nah, ini bagian yang sangat penting dari materi.
Misalnya kita mempunyai function biasa:
String getUsername() {
return "Budi";
}
Function ini:
- nama:
getUsername - return type:
String - parameter: tidak ada
- return value:
"Budi"
Kalau dipanggil:
print(getUsername());
hasilnya:
Budi
Diubah menjadi Arrow Function
Karena isi function hanya:
return "Budi";
kita bisa menyingkatnya:
String getUsername() => "Budi";
Perhatikan sesuatu yang sangat penting:
Function biasa:
String getUsername() {
return "Budi";
}
Arrow:
String getUsername() => "Budi";
Pada arrow function, kita tidak menulis return.
Mengapa?
Karena expression setelah => secara otomatis menjadi nilai yang dikembalikan oleh function.
7. Cara membacanya
Misalnya:
String getUsername() => "Budi";
Kita bisa membacanya secara sederhana:
Function
getUsernamemengembalikan"Budi".
Jadi:
String getUsername() => "Budi";
kurang lebih memiliki makna yang sama dengan:
String getUsername() {
return "Budi";
}
8. Contoh lengkap
String getUsername() {
return "Budi";
}
void main() {
print(getUsername());
}
Output:
Budi
Dengan arrow function:
String getUsername() => "Budi";
void main() {
print(getUsername());
}
Output tetap:
Budi
Jadi kita hanya memperpendek cara menulisnya.
9. Arrow Function dengan parameter
Sekarang kita masuk ke contoh yang lebih menarik.
Misalnya kita mempunyai function untuk menjumlahkan dua angka.
Function biasa:
int add(int a, int b) {
return a + b;
}
Function ini menerima:
a = 10
b = 20
Kemudian:
a + b
menghasilkan:
30
Lalu return mengembalikan 30.
Diubah menjadi Arrow Function
Karena function tersebut hanya melakukan satu hal:
return a + b;
kita bisa menulis:
int add(int a, int b) => a + b;
Jauh lebih pendek.
Kemudian:
void main() {
print(add(10, 20));
}
Output:
30
10. Mari bedah kode tersebut
Kode:
int add(int a, int b) => a + b;
Kita pecah:
int
int
Ini adalah return type.
Artinya function akan menghasilkan nilai bertipe int.
add
add
Ini nama function.
(int a, int b)
Ini adalah parameter.
Function menerima dua angka:
a
b
=>
=>
Ini menunjukkan bahwa kita menggunakan arrow syntax.
a + b
a + b
Ini adalah expression yang akan dievaluasi dan hasilnya otomatis dikembalikan.
11. Alur ketika add(10, 20) dipanggil
Misalnya:
print(add(10, 20));
Prosesnya:
add(10, 20)
↓
a = 10
b = 20
↓
a + b
↓
10 + 20
↓
30
↓
return 30 secara otomatis
↓
print(30)
Output:
30
12. Perbandingan function biasa dan arrow function
Mari kita bandingkan.
Function biasa
int add(int a, int b) {
return a + b;
}
Arrow function
int add(int a, int b) => a + b;
Keduanya mempunyai arti yang sama.
| Function biasa | Arrow |
|---|---|
Menggunakan {} | Menggunakan => |
Perlu return jika mengembalikan nilai | Tidak perlu menulis return |
| Bisa memiliki beberapa statement | Hanya satu expression |
| Lebih panjang | Lebih singkat |
13. Contoh lainnya
Menghitung perkalian
Function biasa:
int multiply(int a, int b) {
return a * b;
}
Arrow:
int multiply(int a, int b) => a * b;
Menghitung pengurangan
Function biasa:
int subtract(int a, int b) {
return a - b;
}
Arrow:
int subtract(int a, int b) => a - b;
Menghitung kuadrat
Function biasa:
int square(int number) {
return number * number;
}
Arrow:
int square(int number) => number * number;
Pemakaian:
print(square(5));
Hasil:
25
14. Arrow Function dengan void
Arrow function tidak harus selalu menghasilkan nilai.
Misalnya:
void sayHello() => print("Hello");
Return type-nya:
void
Artinya function tidak mengembalikan nilai.
Jadi arrow function bisa digunakan untuk function void juga.
Contoh:
void printName(String name) => print(name);
Pemakaian:
printName("Budi");
Output:
Budi
15. Hubungannya dengan materi Anonymous Function sebelumnya
Ini penting karena sebelumnya kita sudah belajar anonymous function.
Anonymous function:
(String name) {
print(name);
}
Arrow function bisa digunakan untuk membuat anonymous function tersebut lebih singkat:
(String name) => print(name);
Contohnya dengan forEach().
Function biasa:
List<String> fruits = [
"Apple",
"Orange",
"Banana",
];
fruits.forEach((String fruit) {
print(fruit);
});
Bisa ditulis:
fruits.forEach((String fruit) => print(fruit));
Hasilnya sama:
Apple
Orange
Banana
Jadi arrow syntax sangat sering kita temui ketika menggunakan:
forEach()
dan konsep callback.
16. Arrow Function + forEach()
Mari kita pahami alurnya.
fruits.forEach((String fruit) => print(fruit));
forEach() mengambil setiap item dari list.
Misalnya:
fruits = [
"Apple",
"Orange",
"Banana"
];
Maka secara konsep:
"Apple"
↓
fruit = "Apple"
↓
print(fruit)
"Orange"
↓
fruit = "Orange"
↓
print(fruit)
"Banana"
↓
fruit = "Banana"
↓
print(fruit)
Arrow function:
(String fruit) => print(fruit)
adalah function yang diberikan kepada forEach().
17. Kesalahan yang sering dilakukan pemula
Misalnya kita mempunyai:
int add(int a, int b) {
return a + b;
}
Kita tidak menulis:
int add(int a, int b) => return a + b;
❌ Salah.
Yang benar:
int add(int a, int b) => a + b;
Karena => sudah memiliki konsep return otomatis.
18. Bagaimana kalau ada dua statement?
Misalnya:
int add(int a, int b) {
print("Menjumlahkan angka");
return a + b;
}
Di sini ada dua statement:
print("Menjumlahkan angka");
return a + b;
Maka tidak cocok menggunakan arrow function.
Gunakan function biasa:
int add(int a, int b) {
print("Menjumlahkan angka");
return a + b;
}
19. Jangan menganggap “satu baris” sebagai aturan mutlak
Caption mengatakan:
“if our function has only one statement”
Untuk pemahaman awal itu boleh, tetapi istilah yang lebih tepat adalah satu expression.
Contoh:
int add(int a, int b) => a + b;
Expression:
a + b
Expression tersebut menghasilkan nilai.
Jadi aturan yang lebih akurat:
Arrow function digunakan ketika body function dapat direpresentasikan oleh satu expression.
20. Gambaran besar function biasa vs arrow
Bayangkan kita mempunyai sebuah mesin.
Function biasa
INPUT
↓
┌─────────────────┐
│ proses │
│ proses │
│ proses │
└─────────────────┘
↓
OUTPUT
Kita membutuhkan {} karena bisa terdapat banyak statement.
int calculate(int a, int b) {
int result = a + b;
print(result);
return result;
}
Arrow function
Kalau prosesnya sangat sederhana:
INPUT
↓
a + b
↓
OUTPUT
kita bisa menulis:
int calculate(int a, int b) => a + b;
21. Contoh beberapa arrow function
String getName() => "Budi";
int add(int a, int b) => a + b;
int subtract(int a, int b) => a - b;
int multiply(int a, int b) => a * b;
double divide(double a, double b) => a / b;
void sayHello() => print("Hello");
Semuanya valid karena masing-masing hanya mempunyai satu expression.
22. Contoh program lengkap
String getUsername() => "Budi";
int add(int a, int b) => a + b;
int subtract(int a, int b) => a - b;
void sayHello() => print("Hello");
void main() {
sayHello();
print(getUsername());
print(add(10, 20));
print(subtract(20, 5));
}
Output:
Hello
Budi
30
15
23. Cara mudah mengingat Arrow Function
Ingat pola ini:
returnType namaFunction(parameter) => expression;
Contoh:
int add(int a, int b) => a + b;
Artinya:
int
↓
return type
add
↓
nama function
(int a, int b)
↓
parameter
=>
↓
arrow
a + b
↓
expression / hasil
24. Hubungan return dengan =>
Ini mungkin bagian paling penting dari materi hari ini.
Function biasa:
int add(int a, int b) {
return a + b;
}
Arrow:
int add(int a, int b) => a + b;
Jangan berpikir:
“
returntidak diperlukan karena function tidak mengembalikan nilai.”
Itu salah.
Justru function tetap mengembalikan nilai.
Bedanya:
return a + b;
digantikan oleh:
=> a + b
Jadi:
=> a + b
secara konsep berarti:
return a + b;
25. Ringkasan materi
| Konsep | Contoh |
|---|---|
| Function biasa | int add(int a, int b) { return a + b; } |
| Arrow function | int add(int a, int b) => a + b; |
| Simbol arrow | => |
| Return pada arrow | Otomatis |
return setelah => | ❌ Tidak ditulis |
| Cocok untuk | Function dengan satu expression |
| Bisa punya parameter? | ✅ Bisa |
Bisa void? | ✅ Bisa |
| Bisa mengembalikan nilai? | ✅ Bisa |
Hafalan paling gampang:
FUNCTION BIASA
{
banyak statement
return ...
}
ARROW FUNCTION
=>
satu expression
return otomatis
Atau cukup ingat:
=>= versi singkat function yang hanya punya satu expression.
Dan satu hal lagi: Arrow Function bukan function baru yang berbeda dari function biasa. Ini hanya cara penulisan yang lebih ringkas untuk function tertentu.