Çözüldü Rust'ta expressionlar neden return yerine kullaniliyor?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Çözüm
Implicit return. Stil tercihi. Yazmasi daha kisa, daha az verbose ve acik oldugunu dusundukleri icin ekledikleri bir stil. Boyle yazmak zorunda degilsin.

Asagidaki de derler.
Kod:
fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

Dilin felsefesine gore "return sadece erken returnler icin". Yani fonksiyonun normal pathlerinde (early return olmayan) return keywordunu kullanmadan bir deger dondurebilirsin. Ornegin;
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        Err("You can't divide to 0. Undefined behavior.")
    }
    Ok(a / b)
}

Yukaridaki derlemez hata verir, cunku early return var. Return keywordu kullanmalisin.
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        return Err("You can't divide to 0. Undefined behavior.")
    }
    Ok(a / b)
}

Yada tum kod yollarini tek sefere dizersin;
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        Err("You can't divide to 0. Undefined behavior.")
    } else {
        Ok(a / b)
   }
}

Ama dedigim gibi return kullanmamak zorundasin gibi bir durum soz konusu degil.
Implicit return. Stil tercihi. Yazmasi daha kisa, daha az verbose ve acik oldugunu dusundukleri icin ekledikleri bir stil. Boyle yazmak zorunda degilsin.

Asagidaki de derler.
Kod:
fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

Dilin felsefesine gore "return sadece erken returnler icin". Yani fonksiyonun normal pathlerinde (early return olmayan) return keywordunu kullanmadan bir deger dondurebilirsin. Ornegin;
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        Err("You can't divide to 0. Undefined behavior.")
    }
    Ok(a / b)
}

Yukaridaki derlemez hata verir, cunku early return var. Return keywordu kullanmalisin.
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        return Err("You can't divide to 0. Undefined behavior.")
    }
    Ok(a / b)
}

Yada tum kod yollarini tek sefere dizersin;
Kod:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        Err("You can't divide to 0. Undefined behavior.")
    } else {
        Ok(a / b)
   }
}

Ama dedigim gibi return kullanmamak zorundasin gibi bir durum soz konusu degil.
 
Son düzenleme:
Çözüm
Anladim cok teşekkürler.
 
Ayrıca ternary operator yerine de bunu kullanıyoruz.
JavaScript:
let x = if a > 5 { a * 3 } else { a + 2 }
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…