CodeBlanks Logo Icon CodeBlanks

Tuple

Tuple (demet) ile farklı türleri tek bir değerde gruplarsın.

Tuple

Tuple farklı türlerden sabit sayıda değeri bir arada tutar. Elemanlara .0, .1 ile erişilir ya da let ile parçalanır:

let kisi: (&str, u32, bool) = ("Ada", 36, true);
println!("{}", kisi.0);           // Ada
let (ad, yas, _) = kisi;
println!("{ad} {yas}");

Fonksiyonlardan birden çok değer döndürmenin en kolay yolu tuple'dır: fn min_max(...) -> (i32, i32).

Tuple döndürmek

Bölüm ve kalanı birlikte döndüren bir fonksiyon:

fn bol(a: i32, b: i32) -> (i32, i32) {
    (a / b, a % b)
}

let (bolum, kalan) = bol(17, 5);
println!("{bolum} {kalan}");  // 3 2

Elemanları anlamlı olan büyük veri için tuple yerine adlandırılmış alanlı struct tercih edilir; kisi.1'in ne olduğu zamanla unutulur.

Uygulama Bölüm ve kalan

fn bol(a: i32, b: i32) -> (i32, i32) fonksiyonunu yaz. let (q, r) = bol(17, 5); ile parçala ve println!("{q} {r}"); yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn bol(a: i32, b: i32) -> (i32, i32) {
    (a / b, a % b)
}

fn main() {
    let (q, r) = bol(17, 5);
    println!("{q} {r}");
}

Beklenen çıktı

3 2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boş tuple <code>()</code> neyi temsil eder?

  • null
  • Boş dizi
  • "Değer yok"; birim (unit) türü Doğru cevap
  • Hata

Açıklama: Değer döndürmeyen fonksiyonlar aslında () döndürür; println! de () döndürür.

2 İkinci eleman

Soru
let nokta = (3, 7);
println!("{}", nokta.____);  // 7
Cevap
let nokta = (3, 7);
println!("{}", nokta.1);  // 7

Açıklama: Tuple elemanları 0'dan başlayan .0, .1 ile okunur.

3 İfade ve sonuç

Kavram Anlamı
(1, "a").1 "a"
let (x, _) = (5, 6) x = 5
() Birim tür
(a / b, a % b) İki değer döndürür

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma