Dilim ve fonksiyonlar
- Rust kursu
- Başlangıç
- Ders 57/115
- 4 dk
Fonksiyonlara dilim geçirmeyi ve veriyi ödünç almayı öğrenirsin.
Dilim ve fonksiyonlar
Fonksiyonlarda &String yerine &str, &Vec<T> yerine &[T] almak hem String hem sabit hem alt dilim kabul etmeyi sağlar. Dönen dilim, girdinin bir parçasıdır:
fn ilk_kelime(s: &str) -> &str {
for (i, b) in s.bytes().enumerate() {
if b == b' ' {
return &s[..i];
}
}
&s[..]
}Dönen &str, s'yi ödünç aldığı sürece kaynak değiştirilemez.
Hazır yardımcılar
Standart kütüphane, elle döngü yazmadan dilim üreten yöntemler sunar:
let s = "ad soyad yaş";
let ilk = s.split(' ').next().unwrap_or(""); // "ad"
let (sol, sag) = s.split_at(2); // ("ad", " soyad yaş")
let temiz = " rust ".trim(); // "rust"split_whitespace, lines ve trim hepsi kaynağın parçalarını &str olarak döndürür; kopya yapmaz.
Uygulama İlk kelime
fn ilk_kelime(s: &str) -> &str yaz: bytes().enumerate() ile ilk boşluğu bul ve &s[..i] döndür; boşluk yoksa &s[..]. "merhaba dünya" ve "tek" için sonuçları boşlukla ayırarak yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn ilk_kelime(s: &str) -> &str {
for (i, b) in s.bytes().enumerate() {
if b == b' ' {
return &s[..i];
}
}
&s[..]
}
fn main() {
println!("{} {}", ilk_kelime("merhaba dünya"), ilk_kelime("tek"));
}Beklenen çıktı
merhaba tek
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>ilk_kelime</code> bir <code>String</code> ile nasıl çağrılır?
- ilk_kelime(metin)
- ilk_kelime(*metin)
- Çağrılamaz
- ilk_kelime(&metin) Doğru cevap
Açıklama: &String otomatik olarak &str'ye dönüşür (deref coercion).
2 Dilim parametresi
fn en_buyuk(v: ____) -> i32 {
*v.iter().max().unwrap()
}
fn en_buyuk(v: &[i32]) -> i32 {
*v.iter().max().unwrap()
}
Açıklama: &[i32] hem vektör hem dizi referansı kabul eder.
3 Yöntem ve " ad soyad " sonucu
| Kavram | Anlamı |
|---|---|
trim() |
"ad soyad" |
split_whitespace().count() |
2 |
len() |
11 |
trim().split_at(2).0 |
"ad" |