where İfadeleri ve Birden Çok Sınır
Karmaşık imzaları okunabilir tutun.
where İfadeleri ve Birden Çok Sınır, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Satır İçi Sınırlar Kalabalıklaştığında
<T: Display + Clone, U: Debug + Default> gibi satır içi sınırlar uzadıkça okunması zorlaşır. Rust, daha temiz bir seçenek olarak where yan tümcesini sunar.
Bu yan tümce kısıtları imzanın altına taşıyarak parametre listesini kısa tutar.
Temel where Yan Tümcesi
Bir where yan tümcesi dönüş türü ile gövde arasında yer alır. Her satır bir türü ve onun sınırlarını listeler.
Bu iki imza tamamen aynı anlama gelir; where biçiminin okunması yalnızca daha kolaydır.
use std::fmt::Display;
fn show<T>(value: T)
where
T: Display,
{
println!("{}", value);
}where İçinde Birden Çok Sınır
Her tür parametresi için bir tane olacak şekilde, virgüllerle ayrılmış birden çok kısıt yerleştirebilirsiniz. Her biri özellikleri + ile birleştirebilir.
Bu, her şeyi satır içine sıkıştırmaya kıyasla karmaşık bir imzanın okunabilir kalmasını sağlar.
use std::fmt::{Display, Debug};
fn report<T, U>(a: T, b: U)
where
T: Display + Clone,
U: Debug,
{
println!("{} {:?}", a, b);
}Eksiksiz Bir Örnek
Bu program, Display özelliğini gerektiren bir where yan tümcesi kullanır. Çalışır ve her bağımsız değişkeni bir etiketle yazdırır.
Sınır eklenmiş olsa bile işlev başlığının nasıl temiz kaldığına dikkat edin.
use std::fmt::Display;
fn label<T>(name: &str, value: T)
where
T: Display,
{
println!("{} = {}", name, value);
}
fn main() {
label("age", 30);
label("city", "Oslo");
}Derleyicinin Satır İçinde Yazamadığı Sınırlar
Bazı sınırlar yalnızca ilişkili veya başvurulan türlerde olduğu gibi bir where yan tümcesinde yazılabilir. Satır içi sözdizimi where Vec<T>: Clone ifadesini anlatamaz.
Bu nedenle where biçimi kesinlikle daha ifade gücüne sahiptir.
fn duplicate<T>(items: Vec<T>) -> (Vec<T>, Vec<T>)
where
Vec<T>: Clone,
{
(items.clone(), items)
}Standart Özellikleri Birleştirme
Gerçek dünyada yaygın bir sınır; sıralamayı, kopyalamayı ve yazdırmayı bir araya getirir. Bu genel max_of, bir dilimdeki en büyük öğeyi bulur.
where yan tümcesi, algoritmanın dayandığı üç özelliği bir arada gruplar.
use std::fmt::Display;
fn max_of<T>(items: &[T]) -> &T
where
T: PartialOrd + Display,
{
let mut best = &items[0];
for item in items {
if item > best { best = item; }
}
best
}max_of Çalıştırma
Aynı fikrin çalıştırılabilir bir programı burada yer alır. Tamsayı dilimi PartialOrd + Display koşulunu sağladığı için çağrı derlenir ve en büyük değeri yazdırır.
İşlev, kayan noktalı sayılar veya karakterler üzerinde de aynı şekilde çalışır.
fn max_of<T>(items: &[T]) -> &T
where
T: PartialOrd,
{
let mut best = &items[0];
for item in items {
if item > best { best = item; }
}
best
}
fn main() {
let nums = [3, 7, 1, 9, 4];
println!("{}", max_of(&nums));
}impl Bloklarında where
where yan tümceleri impl bloklarına da eklenebilir. Bu, yalnızca saklanan tür Display özelliğini uyguladığında bir metot ekler.
T türü Display olmayan örneklerde bu metot bulunmaz.
use std::fmt::Display;
struct Holder<T> { item: T }
impl<T> Holder<T>
where
T: Display,
{
fn print(&self) {
println!("{}", self.item);
}
}Aynı Anda Birçok Sınır
Gerçek genel API'ler çoğu zaman her parametre için birden çok özellik gerektirir. Bu imza kopyalama, hata ayıklama ve varsayılan bir değer gerektirir.
where yan tümcesi, tek bir türde üç sınır bulunmasına rağmen kodun okunabilir kalmasını sağlar.
use std::fmt::Debug;
fn build<T>() -> T
where
T: Default + Clone + Debug,
{
let v = T::default();
v.clone()
}Satır İçi ve where Arasında Seçim
Bir veya iki basit kısıt için satır içi sınırları kullanın. Çok sayıda parametre, uzun özellik listeleri veya karmaşık türlerde sınırlar olduğunda where kullanın.
Her ikisi de aynı koda derlenir; seçim tamamen okunabilirlikle ilgilidir.
Yaşam Süreleriyle where
Bir where yan tümcesi, özellik sınırlarının yanında yaşam süresi ilişkilerini de listeleyebilir. Bu, her iki kısıt türünü içeren genel imzaların düzenli kalmasını sağlar.
Burada yan tümce, T türünün 'a yaşam süresinden daha uzun yaşamasını gerektirir.
fn keep<'a, T>(value: &'a T) -> &'a T
where
T: 'a,
{
value
}Hızlı Kontrol
where yan tümceleri ve birden çok sınır hakkındaki anlayışınızı sınayın.
Özet
Bir where yan tümcesi, özellik sınırlarını imzanın altına taşıyarak parametreler veya özellik listeleri büyüdüğünde okunabilirliği artırır. Ayrıca satır içi sözdiziminin ifade edemediği karmaşık türler ve yaşam süreleri üzerindeki sınırları da ifade edebilir.
Satır içi ve where sınırları aynı şekilde derlenir; bu nedenle daha anlaşılır olanı seçin.
Yapay zeka eğitmeniyle Rust öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 39
- Dersler
- 144
Sıkça Sorulan Sorular
“where İfadeleri ve Birden Çok Sınır” dersi ücretsiz mi?
Evet — “where İfadeleri ve Birden Çok Sınır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“where İfadeleri ve Birden Çok Sınır” dersinde ne öğreneceğim?
Karmaşık imzaları okunabilir tutun. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“where İfadeleri ve Birden Çok Sınır” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Jenerik İşlevler
- Jenerik Struct'lar ve Enum'lar
- Trait Sınırları
- where İfadeleri ve Birden Çok Sınır