Rust karar ifadesi, döngüler, kontrol yapısı, pattern matching ve binding

fn control1(){    let n=2;    if n==2{        println!("eşit");    } else if n>2  {        println!("büyük");    } else{        println!("küçük");    }}
fn control2(){    let n=2;    let sonuc = if n==2{        "eşit"    } else if n>2  {        "büyük"    } else{        "küçük"    };    println!("sonuc= {}",sonuc);}
fn loop1(){    let mut count=0;
    // loop == while(true)    loop {        println!("finite");        count += 1;
        if count >= 4 {            break;        }    }    println!("{}",count);}#[allow(dead_code)] // kullanılmayan kodlar için uyarıları keser.fn loop2(){    'a: loop{        println!("loop a");      'b: loop{          println!("loop b");          'c: loop{              println!("loop c");                // break;              break 'b;          }      }        continue 'a;    }}fn loop_binding(){    let c = loop {        break 10; // break and return(10)    };    println!("{}",c);}
fn while1(){    let mut count = 8;    while count<=0{        println!("{}!",count);        count -=1;    }}fn for1(){    let v=vec![10,20,30,40,50];    for i in v{        println!("{}!",i);    }
    for i in 1..11{ // exclusive range        print!("{}, ",i)    }    println!();

}
fn match1(){    let x= 4;
    match x {        1=> println!("birde bir yerin dibine gir."),        2=> println!("ikide iki ponpon tilki"),        3=> println!("üçte üç bulması güç"),        4=> println!("pasta buldum dörtümüze böl"),        _=> println!("daha bilmiyorum."), // diğerleri olmazsa bu işlenir.    }
    //binding    let sonuc= match x {        1=> "birde bir yerin dibine gir.",        2=> "ikide iki ponpon tilki",        3=> "üçte üç bulması güç",        4=> "pasta buldum dörtümüze böl",        _=> "daha bilmiyorum.", // eğer varsayılan eklenmezse derleyici hata verir.    };    println!("{}",sonuc);
    //daha karmaşık match    let k=11;    match k {        1=> println!("Biiiir"),        2 | 3 | 4 | 5 | 6 | 7 | 8 => println!("2 ve 8 arasında 8 dahil. Daha çocuk"),        8...18 => println!("ergen sayılır."), // inclusive range "..." üç nokta olacak!        _ => println!("varsayılan duruma düştü"),    }
    // tuple ve match. daha havalı match olamazdı.    let pair = (0,-1);    match pair{        (0,y)=>println!("y: {}",y), // ilk eleman 0 eşletme var. y bilinmiyor ve değeri verecek        (x,0)=>println!("x: {}",x),        _=> println!("eşleşme bulunamadı."),    }
    let pair = (6,-6);    match pair{        (x,y) if x==y =>println!("ikisi eşittir."),        (x,y) if x+y == 0 =>println!(" hmm biri negatif"),        (x,_) if x%2 == 0 => println!("x çift sayıdır."),        _=> println!("eşleşme bulunamadı."),    }
    /// inclusive binding    /// büyütülecek birşey yok.    /// p hangi değeri için eşleşiyorsa n ye atanır ve println! ile ekrana yazdırılır.    ///    /// match yapılacak nesne için sahipliğiniz yoksa böyle kullanmaktan başka çare yoktur.
    let p=5;    match p{        n@ 1 ... 12 => println!("n= {}",n),        n@ 13 ... 19 => println!("n= {}",n),        _ => println!("eşleşme yok.") // virgül varsayılan için şart değil.    }
    let n= match p{        n@ 1 ... 12 => n,        n@ 13 ... 19 => n,        _ => 0 // çalışma zamanı çok biçimliği anlatmadım. anlattığımda "eşleşme yok." diyebileceğiz    };    println!("n binding= {}",n)


}
fn main() {/*    control1();    control2();
    loop1();    // loop2(); // loop forever    loop_binding();
    while1();    for1();*/    match1();
}


Yorumlar

Popüler Yayınlar