Dart’ta Fonksiyon detaylı !!!

Emin alan

--

Dart’ta bir fonksiyon şu şekilde tanımlanır:

tip fonksiyonAdı(parametreler) {
// Çalıştırılacak kod
return birDeğer;
}

1. Basit Bir Fonksiyon

Parametre almayan ve değer döndürmeyen bir fonksiyon.

Örnek:

void selamVer() {
print("Merhaba, Dart!");
}

void main() {
selamVer(); // Fonksiyon çağrısı
}

Çıktı:

Merhaba, Dart!

2. Parametre Alan Fonksiyon

Bir fonksiyona parametre göndererek daha esnek hale getirebilirsiniz.

Örnek:

void toplamaYap(int a, int b) {
print("Toplam: ${a + b}");
}

void main() {
toplamaYap(5, 10); // Fonksiyon çağrısı
}
Toplam: 15

3. Değer Döndüren Fonksiyon

Bir fonksiyon işlem sonucunu çağrıldığı yere döndürebilir.

Örnek:

int carpmaYap(int a, int b) {
return a * b;
}

void main() {
int sonuc = carpmaYap(4, 5); // Fonksiyon çağrısı
print("Çarpma sonucu: $sonuc");
}

Çıktı:

Çarpma sonucu: 20

4. İsteğe Bağlı (Opsiyonel) Parametreler

Dart’ta köşeli parantez [ ] içinde tanımlanan parametreler isteğe bağlıdır. Eğer gönderilmezse, varsayılan olarak null olur.

Örnek:

void selamVer(String isim, [String? mesaj]) {
print("Merhaba $isim!");
if (mesaj != null) {
print("Mesaj: $mesaj");
}
}

void main() {
selamVer("Emin"); // İkinci parametreyi göndermedik
selamVer("Emin", "Dart öğreniyorum!"); // İki parametre gönderdik
}

Çıktı:

Merhaba Emin!
Merhaba Emin!
Mesaj: Dart öğreniyorum!

5. Varsayılan Değerli Parametreler

İsteğe bağlı parametrelere varsayılan bir değer atanabilir.

Örnek:

void selamVer(String isim, [String mesaj = "Nasılsın?"]) {
print("Merhaba $isim! $mesaj");
}

void main() {
selamVer("Emin"); // Varsayılan mesaj kullanılır
selamVer("Emin", "Harika bir gün!"); // Kendi mesajımızı gönderdik
}

Çıktı:

Merhaba Emin! Nasılsın?
Merhaba Emin! Harika bir gün!

6. Adlandırılmış Parametreler

Adlandırılmış parametreler süslü parantez { } içinde tanımlanır ve çağrılırken parametre ismiyle belirtilir.

Örnek:

void selamVer({required String isim, String mesaj = "Nasılsın?"}) {
print("Merhaba $isim! $mesaj");
}

void main() {
selamVer(isim: "Emin"); // Sadece isim belirtiliyor
selamVer(isim: "Emin", mesaj: "Hoş geldin!"); // İsim ve mesaj belirtiliyor
}

Çıktı:

Merhaba Emin! Nasılsın?
Merhaba Emin! Hoş geldin!

!Not: required anahtar kelimesi, bir adlandırılmış parametrenin zorunlu olmasını sağlar.

7. Lambda (Anonim Fonksiyonlar)

Dart’ta kısa fonksiyonlar, bir ifade olarak tanımlanabilir. Bu tür fonksiyonlara lambda veya arrow function denir.

Örnek:

int topla(int a, int b) => a + b;

void main() {
print("Toplam: ${topla(3, 7)}");
}

Çıktı:

Toplam: 10

8. Fonksiyonları Değişkene Atama

Dart’ta fonksiyonlar bir değişkene atanabilir.

Örnek:

void main() {
var selamla = (String isim) {
print("Merhaba $isim!");
};

selamla("Emin"); // Fonksiyon çağrısı
}

Çıktı:

Merhaba Emin!

9. Yüksek Dereceli Fonksiyonlar

Bir fonksiyon, başka bir fonksiyonu parametre olarak alabilir veya bir fonksiyon döndürebilir.

Örnek: Fonksiyonu Parametre Olarak Kullanma

void islemYap(int a, int b, Function islem) {
print("Sonuç: ${islem(a, b)}");
}

void main() {
islemYap(5, 3, (x, y) => x + y); // Toplama
islemYap(5, 3, (x, y) => x * y); // Çarpma
}

Çıktı:

Sonuç: 8
Sonuç: 15

10. Fonksiyonların Döndürülmesi

Dart, bir fonksiyonun başka bir fonksiyonu döndürmesine izin verir. Bu, “yüksek dereceli fonksiyonlar” (higher-order functions) olarak adlandırılır.

Örnek: Bir Fonksiyon Döndüren Fonksiyon

Function toplamaFonksiyonu() {
return (int a, int b) => a + b; // Lambda ile döndürüyoruz
}

void main() {
var topla = toplamaFonksiyonu();
print("Sonuç: ${topla(5, 3)}");
}

Çıktı:

Sonuç: 8

11. İç İçe Fonksiyonlar (Nested Functions)

Dart’ta bir fonksiyonun içinde başka bir fonksiyon tanımlanabilir. Bu iç fonksiyonlar yalnızca dış fonksiyon içinde çağrılabilir.

Örnek:

void disFonksiyon() {
print("Dış fonksiyon çalıştı.");

void icFonksiyon() {
print("İç fonksiyon çalıştı.");
}

icFonksiyon(); // İç fonksiyon burada çağrılabilir
}

void main() {
disFonksiyon();
}

Çıktı:

Dış fonksiyon çalıştı.
İç fonksiyon çalıştı.

12. Rekürsif Fonksiyonlar (Recursive Functions)

Bir fonksiyonun kendisini çağırmasına rekürsiyon (recursion) denir. Bu, genellikle döngülerin yerini alabilir.

Örnek: Faktöriyel Hesaplama

int faktoriyel(int n) {
if (n <= 1) {
return 1;
} else {
return n * faktoriyel(n - 1);
}
}

void main() {
print("5! = ${faktoriyel(5)}");
}

Çıktı:

5! = 120

13. Nullable Fonksiyonlar

Bir fonksiyon, null atanabilir bir değişkene tanımlanabilir. Bu, Function? ile sağlanır.

Örnek:

void main() {
Function? selamla;

selamla = (String isim) {
print("Merhaba $isim!");
};

if (selamla != null) {
selamla("Oğuz");
}
}

Çıktı:

Merhaba Oğuz!

14. Varsayılan Parametreler ve Adlandırılmış Parametrelerle Birlikte Kullanımı

Adlandırılmış parametreler, varsayılan değerlerle birlikte kullanılabilir. Bu, esneklik sağlar.

Örnek:

void siparisVer({required String urun, int miktar = 1}) {
print("Sipariş verildi: $urun, Miktar: $miktar");
}

void main() {
siparisVer(urun: "Laptop");
siparisVer(urun: "Telefon", miktar: 3);
}

Çıktı:

Sipariş verildi: Laptop, Miktar: 1
Sipariş verildi: Telefon, Miktar: 3

15. Fonksiyonları Koleksiyonlarda Kullanma

Fonksiyonlar, bir koleksiyonun elemanları üzerinde işlem yapmak için kullanılabilir.

Örnek: map Kullanımı

void main() {
List<int> sayilar = [1, 2, 3, 4, 5];
var kareler = sayilar.map((sayi) => sayi * sayi).toList();
print("Kareler: $kareler");
}

Çıktı:

Kareler: [1, 4, 9, 16, 25]

16. Fonksiyonları Parametre Olarak Kullanma

Bir fonksiyon başka bir fonksiyona parametre olarak gönderilebilir.

Örnek:

void islemYap(int a, int b, Function islem) {
print("Sonuç: ${islem(a, b)}");
}

int toplama(int x, int y) => x + y;
int carpma(int x, int y) => x * y;

void main() {
islemYap(4, 5, toplama); // Toplama fonksiyonunu gönderiyoruz
islemYap(4, 5, carpma); // Çarpma fonksiyonunu gönderiyoruz
}

Çıktı:

Sonuç: 9
Sonuç: 20

17. Asenkron Fonksiyonlar

Dart, asenkron işlemler için Future ve async-await yapılarını kullanır.

Örnek: Basit Asenkron Fonksiyon

Future<String> veriGetir() async {
await Future.delayed(Duration(seconds: 2)); // 2 saniye bekle
return "Veri getirildi!";
}

void main() async {
print("Veri bekleniyor...");
String veri = await veriGetir();
print(veri);
}

Çıktı:

Veri bekleniyor...
Veri getirildi!

18. Arrow Function ve Birden Fazla Satır

Birden fazla satır içeren arrow function kullanılamaz, ancak kod bloğu {} ile tanımlanarak normal bir fonksiyona dönüştürülebilir.

Örnek:

int toplam(int a, int b) {
int sonuc = a + b;
print("Hesaplanan toplam: $sonuc");
return sonuc;
}

void main() {
print(toplam(4, 5));
}

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Emin alan
Emin alan

Written by Emin alan

Jr. Flutter Developer|Android & İOS

No responses yet

Write a response