Modül dersleri (1/2)
Koleksiyonlar ve HashMap
Koleksiyonlar birden fazla değeri tutabilen veri yapılarıdır. İlkel dizi ve tuple türlerinden farklı olarak, bu koleksiyonların referans verdiği veriler yığın üzerinde depolanır; bu, veri miktarının derleme zamanında bilinmesine gerek olmadığı ve programın yürütülmesi sırasında dinamik olarak büyüyüp küçülebileceği anlamına gelir.
Rust'ta en sık kullanılan iki koleksiyon vektörler (Vec<T>) ve anahtar-değer eşlemeleridir (HashMap<K, V>).
Vektörler (Vec<T>)
Vektörler, bellekte tüm değerleri yan yana koyan tek bir veri yapısında aynı türden birden fazla değeri saklamanıza olanak tanır:
fn main() {
// Creating an empty mutable vector
let mut v: Vec<i32> = Vec::new();
// Or using the vec! macro
let mut v2 = vec![1, 2, 3];
// Appending elements
v.push(5);
v.push(6);
// Accessing elements by index
let third = v2[2];
println!("The third element is: {}", third);
}HashMap (HashMap<K, V>)
HashMap<K, V> koleksiyonu, K türündeki anahtarların V türündeki değerlerle eşlenmesini saklar. Bu anahtarların ve değerlerin belleğe nasıl yerleştirileceğini belirleyen karma işlevi aracılığıyla çalışır. Verileri sayısal bir dizine göre değil de bir anahtara (ad veya kimlik gibi) göre aramak istediğinizde son derece kullanışlıdır.
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
// Inserting key-value pair
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// Reading a value (returns an Option<&V>)
let team_name = String::from("Blue");
let score = scores.get(&team_name);
match score {
Some(val) => println!("Score: {}", val),
None => println!("No score found."),
}
}Kendin dene
Alıştırma 1: Vec'te Temel İşlemler
Vec::new() kullanarak v adında değişken bir tamsayı vektörü bildirin. Push yöntemini kullanarak 10, 20 ve 30 numaralı elemanları sırayla ekleyin. Son olarak vektörün ilk elemanını (indeks 0) println! kullanarak yazdırın.
İpucu göster
Vektörü başlatmak için "let mut v = Vec::new();" kullanın, "v.push(value)" ile öğeleri ekleyin ve "v[0]" ile erişin.
3 denemeden sonra çözüm mevcut
Alıştırma 2: HashMap ile Kullanıcı Puanları
Std::collections::HashMap’i içe aktarın. Ana işlevde, String anahtarlarını ve i32 değerlerini depolamak için puanlar adlı değişken bir HashMap bildirin. 'Alice' kullanıcısı için 50 puan girin. Get yöntemini kullanarak puanı güvenli bir şekilde çıkarın ve yazdırmak için unwrap() yöntemini kullanın.
İpucu göster
'Std::collections::HashMap;' kullanmayı unutmayın. `scores.insert(String::from("Alice"), 50);`ile ekleyin ve`.get("Alice").unwrap()` ile değeri getirin.
3 denemeden sonra çözüm mevcut
Alıştırma 3: Bir Vektördeki Değerleri İkiye Katlama
&[i32] tamsayılarından oluşan bir dilime başvuruyu kabul eden ve aynı öğeleri 2 ile çarpılmış olarak içeren yeni bir Vec<i32> döndüren double_values adlı bir işlev tanımlayın.
İpucu göster
İşlev, dilimin öğeleri üzerinde yinelemeli ve bunları döndürülecek yeni vektöre 2 ile çarparak yerleştirmelidir.
3 denemeden sonra çözüm mevcut