Formatlı Yazdırma
Yazdırmastd::fmt
'de tanımlanan bir dizi macro'lar
tarafından yönetilen bir işlemdir; bunlardan bazıları:
format!
: Biçimlendirilmiş metniString
'e yazarprint!
:format!
ile aynıdır, ancak metin konsola yazdırılır. (io::stdout).println!
:print!
ile aynıdır, ancak yeni bir satır eklenir.eprint!
:format!
ile aynıdır, ancak metin standart hataya yazdırılır. (io::stderr).eprintln!
:eprint!
ile aynıdır, ancak yeni bir satır eklenir.
Tüm metinler aynı şekilde ayrıştırılır. Rust, derleme zamanında biçimlendirme(formatlama) doğruluğunu kontrol eder.
fn main() { // Genel olarak, `{}` otomatik olarak herhangi bir // argümanla yer değiştirecektir. Bunlar dize(String)leştirilecektir. println!("{} gunler", 31); // Son ek olmadan 31, i32 olacaktır, 31'in türünü bir son ek ekleyerek // değiştirebilirsiniz. Örn. 31i64 sayısının türü i64'tür. // Bunun işe yaradığı çeşitli isteğe bağlı desenler vardır. // Konumsal argümanlar kullanılabilir: println!("{0}, bu {1}. {1}, bu {0}", "Ali", "Veli"); // Adlandırılmış argümanlar olarak da... println!("{subject} {verb} {object}", object="tembel kopek", subject="hizli kosan tilki", verb="ziplar"); // Özel biçimlendirme `:` işaretinden sonra belirtilebilir. println!("{:b} kisiden {} tanesi binary(ikili) sistemi bilir, yarisi bilmez", 1, 2); // Metni belirtilen genişlikte sağa hizalayabilirsiniz. Bu takip eden çıktıyı verecektir: // " 1". 5 boşluk ve bir adet "1". println!("{number:>width$}", number=1, width=6); // Sayıları ekstra sıfırla doldurabilirsiniz. Bu "000001" çıktısını verecektir. println!("{number:>0width$}", number=1, width=6); // Rust doğru sayıda argümanın kullanıldığından emin olmak için de // kontrol edecektir. println!("Benim adim, {0}, {1} {0}", "Bond"); // ÇÖZMELİSİNİZ! ^ Eksik argümanı ekleyin: "James" // `i32` içeren `Structure` isimli bir structure(yapı) oluşturun. #[allow(dead_code)] struct Structure(i32); // Ancak, bu yapı gibi özel tipler daha karmaşık bir işlem gerektirir. // örn. Bu bir işe yaramayacaktır: println!("Bu struct `{}` yazdirilmayacak...", Structure(3)); // ÇÖZMELİSİNİZ! ^ Bu satırı yoruma alın. }
std::fmt
metnin görüntülenmesini yöneten birçok trait
yani nitelik içerir.
Bunlardan ikisinin temel biçimi aşağıda listelenmiştir:
fmt::Debug
:{:?}
işaretini kullanır. Hata ayıklama amacıyla metni biçimlendirir.fmt::Display
:{}
işaretini kullanır. Metni daha zarif ve kullanıcı dostu bir şekilde biçimlendirir.
Burada, std kütüphanesi bu türler için implementasyonlar sağladığındanfmt::Display
kullandık. Özel türlerde metin yazdırmak için daha fazla adım gerekecektir.
fmt::Display
niteliğinin implemente edilmesi, otomatik olarak türünüzü String
türüne [dönüştürme]mize olanak tanıyan ToString
niteliğini de implemente eder.
Etkinlikler
- Yukarıdaki koddaki iki sorunu (bkz. ÇÖZMELİSİNİZ!) düzeltmek, böylece hatasız çalışacaklar.
- Gösterilen ondalık basamaklı sayıyı kontrol ederek
Pi is roughly 3.142
yazdıran birprintln!
macro'su ekleyin. Bu alıştırmada, pi için tahmin olaraklet pi = 3.141592
kullanın. (İpucu: Görüntülenecek ondalık basamaklı sayıyı ayarlamak içinstd::fmt
belgelerini kontrol edebilirsiniz.)