ProgramlamaBackend Geliştirici

Rust'ta değiştirilemez ve değiştirilebilir değişkenlerle çalışmanın özelliklerini açıklayın. Diğer dillerin aksine, neden değişkenler varsayılan olarak değiştirilemez?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Soru Geçmişi

C veya JavaScript gibi birçok popüler programlama dilinde, değişkenler varsayılan olarak değiştirilebilir. Rust'ta dil yazarları değişkenlerin varsayılan olarak değiştirilemez olmasına yönelik önemli bir seçim yaptılar: bu karar, kod güvenliği ve değişkenlerin durumu ile ilgili beklenmedik değişikliklerle ilişkili hataların azaltılması ile ilgilidir.

Problem

Değiştirilebilir değişkenlerin ana problemi, değerlerin dışarıdan değişimlerine bağlı olarak hata ayıklama ve hata bulmanın zorluğudur. Özellikle, değişkenler programın farklı yerlerinde değiştiğinde ve değişimlerinin kontrolü kaybolduğunda, kodun davranışını anlamak zorlaşır. Bu, özellikle çoklu iş parçacıklı uygulamalar yazarken veya kodda karmaşık bağımlılıklar olduğunda hatalara ve beklenmedik sonuçlara yol açabilir.

Çözüm

Rust'ta değişkenler varsayılan olarak let anahtar kelimesi ile değiştirilemez. Bir değişkeni değiştirilebilir hale getirmek için açıkça mut belirtmek gerekir. Bu, kodun güvenilirliğini artırır, değişmezliği bilinçli bir seçim haline getirir ve rastgele değişikliklerin olasılığını azaltır.

Kod örneği:

let x = 5; // değiştirilemez değişken let mut y = 10; // değiştirilebilir değişken y += 1; // geçerli x += 1; // derleme hatası!

Temel özellikler:

  • Varsayılan değiştirilemezlik — güvenlik için.
  • Değiştirilebilirliği açıkça belirtme (mut ile).
  • Derleyici, derleme aşamasında değiştirilemez değişkenlerin modifikasyonlarını önler.

Kurnaz Sorular.

Yapı alanını değiştirmek, eğer yapı değişkeni değiştirilemez olarak ilan edildiyse mümkündür?

Hayır, eğer yapı değişkeni değiştirilemez olarak ilan edilmişse, alanları da değiştirilemez. Alanları değiştirmek için değişkeni mut ile ilan etmek gerekir.

Kod örneği:

struct Point { x: i32, y: i32 } let mut p = Point { x: 0, y: 0 }; p.x = 5; // tamam let p2 = Point { x: 1, y: 2 }; p2.x = 3; // derleme hatası!

Eğer değişken mut ise, ona aynı anda birden fazla değiştirilebilir referans ile başvurmak mümkün müdür?

Hayır, Rust'ta bir nesne üzerinde sadece bir tane değiştirilebilir referans bulunabilir. Bu kural, veri yarışını önler.

Değiştirilemez nesnelerden oluşan bir dizi, değiştirilebilir olarak ilan edilebilir ve içeriği değiştirilebilir mi?

Evet. Eğer dizi değişkeni mut olarak ilan edilirse, elemanları değiştirilebilir; ancak dizi elemanlarının türü değiştirilebilirliği desteklemiyorsa, elemanlar değiştirilemez.

Tipik Hatalar ve Antipatiler

  • Gereksiz yere mut kullanımı, kodu daha az güvenli hale getirir.
  • Değişkenin içeriğini mut ilan etmeden değiştirme girişimi.
  • İç içe yapılardaki değiştirilebilirlik ile ilgili yanlış anlamalar.

Gerçek Hayattan Örnek

Olumsuz Durum

Projede, gereksiz yere değiştirilebilir olarak ilan edilen değişkenler bulunuyor. Bu, bir değişkenin bir yöntem içinde yanlışlıkla değiştirilmesine neden oluyor ve bu da prodüksiyondaki zor tespit edilebilen bir hataya yol açıyor.

Artılar:

  • Değiştirilebilirlik üzerinde dikkat etmeksizin hızlı kod yazma.

Eksiler:

  • Hata ayıklama zorluğu ve gereksiz değişikliklerle ilgili yüksek hata riski.

Olumlu Durum

Takım projesinde, değişkenler varsayılan olarak değiştirilemez kabul ediliyor ve yalnızca gerçekten gerekli olduğunda değiştirilebilirlik kullanılıyor, her zaman nedeni açıklayan yorumlar ekleniyor.

Artılar:

  • Kodun okunması ve sürdürülmesi daha kolay, daha az gizli değişiklik.
  • Derleyici, değiştirilebilirlikle ilgili hataları kendisi yakalıyor.

Eksiler:

  • Bazen biraz daha fazla kod yazmak veya bu tarzda alışkın olmayan yeni başlayanlar için küçük bir öğrenme eğrisi geçirmek gerekiyor.