Menu
Coddy logo textTech

Anonim Fonksiyonlar

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 44 / 65.

Şimdiye kadar, calculateTotal veya printMessage gibi isimlere sahip fonksiyonlar oluşturuyordunuz. Ancak bazen sadece belirli bir görev için basit bir fonksiyona ihtiyaç duyarsınız ve ona bir isim vermek gereksiz hissettirir. İşte anonim fonksiyonların işe yaradığı yer burasıdır.

Anonim bir fonksiyon, ismi olmayan bir fonksiyondur. Onu tam ihtiyacınız olan yerde tanımlarsınız, bu da kodunuzu kısa ve tek seferlik işlemler için daha özlü hale getirir. Sözdizimi basittir - sadece parametre listesini ve ardından fonksiyon gövdesini yazarsınız:

(parameter) {
  // fonksiyon gövdesi
}

Anonim fonksiyonlar, liste metotlarıyla özellikle kullanışlıdır. Örneğin, bir listedeki her bir öğeyi yazdırmak için ayrı bir isimlendirilmiş fonksiyon oluşturmak yerine, forEach metoduyla doğrudan anonim bir fonksiyon kullanabilirsiniz:

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
  print(fruit);
});

Bu yaklaşım, özellikle fonksiyon mantığı basit olduğunda ve programınızın başka bir yerinde tekrar kullanılmayacaksa kodunuzu temiz ve odaklanmış tutar.

challenge icon

Görev

Kolay

Anonim fonksiyonları kullanarak bir çalışan isimleri listesini işleyen bir program oluşturun. Programınız, her liste öğesi üzerinde farklı işlemler gerçekleştirmek için forEach yöntemiyle anonim fonksiyonların nasıl kullanılacağını gösterecektir.

  1. Virgülle ayrılmış çalışan isimlerini içeren bir dize girişi okuyun (örneğin, "Alice,Bob,Charlie,Diana")
  2. split() yöntemini kullanarak giriş dizesini tekil isimlerden oluşan bir listeye bölün
  3. Her çalışan ismini bir hoş geldin mesajıyla birlikte yazdırmak için anonim bir fonksiyonla forEach yöntemini kullanın
  4. Her çalışan ismini büyük harflerle yazdırmak için başka bir anonim fonksiyonla forEach yöntemini kullanın
  5. Her çalışan ismini karakter sayısıyla birlikte yazdırmak için üçüncü bir anonim fonksiyonla forEach yöntemini kullanın

Örneğin, giriş "Alice,Bob,Charlie" ise, programınızın çıktısı şöyle olmalıdır:

Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 characters

Eğer giriş "John,Sarah" ise, programınızın çıktısı şöyle olmalıdır:

Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 characters

Programınız, her biri kendi anonim fonksiyonuna sahip üç ayrı forEach yöntem çağrısı kullanmalıdır. Anonim fonksiyonlar, onlara isim verilmeden satır içinde (inline) tanımlanmalıdır. Her anonim fonksiyon, mevcut çalışan adını temsil eden tek bir parametre almalı ve belirtilen işlemi gerçekleştirmelidir. Çıktı mesajlarını tam olarak yukarıda gösterildiği gibi biçimlendirmek için dize enterpolasyonu (string interpolation) kullanın.

Kopya kağıdı

Anonim fonksiyon, tam ihtiyacınız olan yerde tanımlanan, ismi olmayan bir fonksiyondur. Sözdizimi, parametre listesini takip eden fonksiyon gövdesini kullanır:

(parameter) {
  // fonksiyon gövdesi
}

Anonim fonksiyonlar, özellikle forEach gibi liste metotlarıyla kullanışlıdır:

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
  print(fruit);
});

Bu yaklaşım, başka bir yerde tekrar kullanılmayacak basit, tek seferlik işlemler için kodun temiz ve odaklanmış kalmasını sağlar.

Kendin dene

import 'dart:io';

void main() {
  // Çalışan isimlerini içeren giriş dizesini oku
  String? input = stdin.readLineSync();
  
  // Girişi isim listesine ayır
  List<String> employeeNames = input!.split(',');
  
  // Başlangıç işleme mesajını yazdır
  print('Processing employee list: $input');
  print('===========================================');
  
  // TODO: Kodunuzu aşağıya yazın
  // Şunları yapmak için anonim fonksiyonlarla forEach kullanın:
  // 1. Hoş geldiniz mesajlarını yazdırın
  // 2. İsimleri büyük harfle yazdırın  
  // 3. İsim uzunluklarını yazdırın
  
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler