Bir Listeden Öğeleri Seçme - Spectre Console Serisi
Spectre Console, geliştiricilerin düz, statik metin programlar yerine etkileşimli konsol uygulamaları oluşturmasına olanak tanıyan güçlü bir .NET NuGet paketidir. En kullanışlı özelliklerinden biri, kullanıcının listeden kaydırarak ve doğrudan klavye ile seçebileceği seçenekler sunmanıza olanak tanıyan Spectre Console Seçim İstemidir. Bu, konsol girdisini, insanların cevaplarını manuel olarak yazmalarından daha güvenilir, kullanıcı dostu ve görsel olarak cilalı yapar.
Tim Corey, "Selecting Items from a List – Spectre Console Series" adlı videosunda bu özelliği nasıl kullanacağınızı tam olarak gösteriyor. Bu makalede, açıklamalarını adım adım takip edeceğiz ve siz de izleyip kodlayabilmeniz için zaman damgalarını işaret edeceğiz. Bu, kendi .NET konsol uygulamalarınızda bir Seçim İstemi oluşturmayı ve özelleştirmeyi öğrenmek için harika bir yoldur.
Dersin Tanıtımı
0:00'da Tim, Spectre Console'un geliştiricilere C# konsol uygulamalarını görsel olarak çekici, bilgilendirici uygulamalara dönüştürme olanağı verdiğini açıklar. Onun video serisi, kütüphaneyi 10 dakikalık dilimlerle kapsar ve açıklama kısmında kaynak koda bağlantılar içerir.
Bu ders, Tim'in (0:18), kullanıcıya bir listeden bir seçenek seçmesini nasıl soracağını ve ardından o listeyi navigasyon için klavye kullanarak nasıl kullanacağını anlatmaya odaklanır. Bu "sor ve cevapla" deseni, modern ve etkileşimli hissettiren konsol uygulamaları oluşturmanın temel taşını oluşturur. Ayrıca izleyicilere (0:27) kanalına abone olmalarını ve daha fazla eğitim kaynağı için iamtimcorey.com'u ziyaret etmelerini hatırlatır.
Bir Seçim İstemi Oluşturma
0:34'te Tim, uygulamalarında sıkça kullandığı bir yer tutucu adlar listesini gösterir. Bu, "favori meyveniz hangisi" örneği istiyorsanız, elma, muz, portakal gibi bir meyve listesi de bir o kadar kolay olabilir. Kullanıcının seçeceği cevabı tutacak tür olarak bir string değişken kurar:
string favoriteName;string favoriteName;
0:57'de Tim, önceki derste ele alınan temel istemden tam bir SelectionPrompt fonksiyonuna geçer:
favoriteName = AnsiConsole.Prompt(
new SelectionPrompt<string>()
.Title("Which is your favorite placeholder name")
.AddChoices(names)
);favoriteName = AnsiConsole.Prompt(
new SelectionPrompt<string>()
.Title("Which is your favorite placeholder name")
.AddChoices(names)
);SelectionPrompt'un bir başlığa ihtiyaç duyduğunu (1:13) açıklar, kendi durumunda "En sevdiğiniz yer tutucu ad hangisi". Bir favori meyve için soruyorsanız, başlığı "En sevdiğiniz meyve hangisi" olarak değiştirebilirsiniz.
Metni (1:24) mavi, yeşil veya gri renkler gibi Spectre Console'un stilleriyle süsleyebilirsiniz, ancak bu derste seçim istemine odaklanmaktadır.
1:39'da Tim, .AddChoices() çağrısını yaparak seçimleri -isim listesini- ekler. Bu seçimler meyve, sayılar, nesneler veya hatta bir "arama" fonksiyonunun sonuçları olabilir.
Son olarak, 1:55'de Tim, Spectre Console'un işaretleme satırını kullanarak seçilen öğeyi kullanıcıya geri göstermek için kullanır:
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");Bu, seçilen cevabı kırmızı renkte vurgulamak için çevrimiçi işaretleme kullanır, ancak konsol temanızın gerektirdiği hallerde aynı kolaylıkla mavi veya yeşil kullanabilirsiniz.
Seçim İstemi Çalıştırma
Tim kodu kaydeder ve 2:34'te çalıştırır. Konsol görüntüler:
İsimler veya meyve listesi.
Yukarı ve aşağı hareket etmek için ok tuşları (2:41).
- Bir öğeyi seçmek için Enter tuşuna basın.
Tim "Sue Storm" seçimini gösterir (2:50). Enter tuşuna basıldığında, liste kaybolur ve konsol çıktıları:
Your favorite name is Sue Storm.Your favorite name is Sue Storm.Bu bir meyve listesi olsaydı, "Favori meyveniz Muz" veya "Favori meyveniz Elma" görebilirsiniz.
Uzun Listeleri Ele Alma
Tim ardından yaygın bir problemi ele alır: uzun listeler. 3:13'te, görünür öğeleri sınırlamak için PageSize özelliğini tanıtır:
.PageSize(4).PageSize(4)3:19'da dört sayısının özelliklerin gösterimini bilinçli olarak küçük olduğunu açıklar. Yalnızca bu kadar çok öğe bir seferde gösterilir. Elma, muz, portakal, mango, ananas gibi geniş bir meyve listesi olsaydı, PageSize konsolun sonsuz kaymasını engeller.
3:34'te Tim, kullanıcıları yönlendirmek için gri renkte bir MoreChoicesText mesajı ekler:
.MoreChoicesText("[grey](Move down to reveal more choices)[/]").MoreChoicesText("[grey](Move down to reveal more choices)[/]")Bu metin kullanıcıya daha fazla seçeneği açığa çıkarmak için aşağı hareket edebileceklerini söyler. Bu özellikle liste boyutunuz büyük olduğunda ve belirgin bir ipucu istemek için hata veya karışıklık riskini almaktan kaçınmak istediğinizde yardımcıdır.
Uzun Liste Davranışını Gösterme
Tim programı yeniden çalıştırır (4:08):
Başlangıçta yalnızca dört seçenek gösterilir.
Gri mesaj "Daha fazla seçeneği açığa çıkarmak için aşağı inin" der (4:13).
Aşağı kaydırma ek öğeleri ortaya çıkarır.
- Yukarı kaydırma ilk olanları tekrar gösterir (4:20).
Tim bunun (4:25) büyük listeler için ideal olduğunu kaydeder - sonsuz konsol kaydırması yok. 10 veya 15 öğeyi bir seferde gösterebilir ve kullanıcıya geri kalanını geçmesine izin verebilirsiniz. Bu, konsolu çok fazla çıktıyla bir anda boğulması sorununu çözer.
Seçim İsteminin Yazmaktan Neden Daha İyi Olduğu
Tim (4:38) seçim isteminin yazmaktan neden daha iyi olduğunu vurgular:
Bir seçim yaptığınızda, liste kaybolur (4:41).
- Seçilen cevabınızı hemen görürsünüz (4:45).
Bunu (5:05), kullanıcıların "evet" veya "hayır" yazması gereken eski istemlerle karşılaştırır. SelectionPrompt ile bu seçenekleri doğrudan sunabilir ve kullanıcıların hata oranlarını azaltarak ok tuşlarıyla seçim yapmalarına olanak tanıyabilirsiniz.
Tim (5:35) istemi "gerçekten harika bir ek" olarak tanımlar; çünkü girişi kolaylaştırdığını, konsol uygulamalarını daha etkileşimli hale getirdiğini ve girdi sorunlarına açık bir çözüm sunduğunu söyler.
Diğer Kullanımlar ve Gelecek Konular
Tim (5:43) bu dersin bir listeden tek öğe seçmeyi kapsadığını belirtir. Gelecekteki videolarında, kullanıcıların birden fazla öğeyi seçip Enter tuşuyla onaylayabileceği çoklu seçim istemlerini gösterecektir (5:39).
Ayrıca (5:47) liste herhangi bir nesne türü olabilir - stringler, tam sayılar, meyveler, hatta bir fonksiyondan dönen varsayılan seçenekler. Örneğin, kullanıcıyı (5:55) en sevdiği meyve ("elma", "muz", "portakal") için teşvik edebilirsiniz.
Spectre Console'un Seçim İstemi ile varsayılanları dahi ayarlayabilir, gerekli cevapları ele alabilir ve bir seçimin ardından alınacak eylemi özelleştirebilirsiniz.
Sonuç
Tim videosunun sonunda (6:01) Spectre Console'da öğe seçimlerinin nasıl uygulandığını teyit eder - konsol uygulamalarındaki listeleri yönetmek için temiz, kullanıcı dostu bir yol. İster bir favori meyve, bir sayı, yahut bir nesne soruyor olun, Seçim İstemi uygulamanıza ekstra yazı ve hatasız cilalı bir deneyim sunar.
Tim Corey'nin Videosundan Ana Noktalar
Spectre Console'un SelectionPrompt'u kullanıcılara ok tuşlarıyla girişlerini manuel olarak yazmak yerine listeleri gezinme olanağı tanır.
Başlık, Seçenekler, Renkler (mavi, yeşil, gri), PageSize ve MoreChoicesText ile özelleştirerek daha fazla seçeneği ortaya çıkarmaya yardımcı olun.
Bir öğe seçildiğinde, liste kaybolur ve seçilen cevap görüntülenir.
Kısa ve uzun listeler için ideal, konsol kaydırma sorunlarını önler.
Herhangi bir veri tipi ile çalışır (string, sayılar, elma, muz, portakal gibi meyveler veya özelleştirilmiş nesneler).
- Tim, gelecekteki videolarda çoklu seçim istemlerini ele alacak, burada kullanıcılar birden fazla seçeneği geçiş yapabilir ve ardından Enter tuşuna basarak onaylayabilir.

