2016-04-01 13 views
-1

Bir değişken null olup olmadığını denetler bazı pseudocode var:Rust'ta bir şeyin başlatılıp başlatılmadığını nasıl bilebilirim?

Test test; 

if (test == null) { 
    test = new Test(); 
} 

return test; 

nasıl Rust böyle bir şey yapsın ki? Bu şimdiye kadar benim girişimi: derleyici bunu ileri gitmesine izin vermez çünkü

struct Test { 
    time: f64, 
    test: Test, 
} 

impl Test { 
    fn get(&self) -> Test { 

     if self.test == null { 
      // <-- 

      self.test = Test { time: 1f64 }; 
     } else { 
      self.test 
     } 
    } 
} 
+2

deneyin oluşturma ve başlatılmamış değeri kullanılarak :) –

+0

a.b @. Haklısın, bence soruyu tekrar aldığımla, şimdi kendimi daha aptal hissediyorum niyetim tek bir –

+0

yaratılıyor "Test" yapınızın bir "test" yapısı var. Bunun böyle olması mı demek istediniz? – quornian

cevap

6

İlklendirilmeyen değişkenlerin çalışma zamanında tespit edilemez.

İsteğe bağlı bir değer depolamak isterseniz, bunun için Option<...> türü kullanışlıdır. Daha sonra kontrol etmek match veya if let ifadeleri kullanabilirsiniz:

let mut x: Option<f32> = None; 
// ... 

x = Some(3.5); 
// ... 

if let Some(value) = x { 
    println!("x has value: {}", value); 
} 
else { 
    println!("x is not set"); 
} 
+0

oluşturmaktı. Sadece bir güncelleme yaptım, belki de beni yönlendirebilirsin? –

İlgili konular