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.
Görev
KolayAnonim 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.
- Virgülle ayrılmış çalışan isimlerini içeren bir dize girişi okuyun (örneğin,
"Alice,Bob,Charlie,Diana") split()yöntemini kullanarak giriş dizesini tekil isimlerden oluşan bir listeye bölün- Her çalışan ismini bir hoş geldin mesajıyla birlikte yazdırmak için anonim bir fonksiyonla
forEachyöntemini kullanın - Her çalışan ismini büyük harflerle yazdırmak için başka bir anonim fonksiyonla
forEachyöntemini kullanın - Her çalışan ismini karakter sayısıyla birlikte yazdırmak için üçüncü bir anonim fonksiyonla
forEachyö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 charactersEğ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 charactersProgramı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
}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
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi