Skip to content

Latest commit

 

History

History
111 lines (81 loc) · 1.76 KB

File metadata and controls

111 lines (81 loc) · 1.76 KB

Struct, Enum, dan Pattern Matching

Struct

Struct dipakai untuk mengelompokkan data yang saling terkait.

struct Pengguna {
    nama: String,
    umur: u8,
    aktif: bool,
}

Pemakaian:

let user = Pengguna {
    nama: String::from("Dina"),
    umur: 22,
    aktif: true,
};

Method pada struct

struct Persegi {
    lebar: u32,
    tinggi: u32,
}

impl Persegi {
    fn luas(&self) -> u32 {
        self.lebar * self.tinggi
    }
}

&self berarti method meminjam instance.

Enum

Enum dipakai saat data bisa memiliki beberapa variasi.

enum StatusPesanan {
    Diproses,
    Dikirim,
    Selesai,
}

Enum juga bisa membawa data:

enum Pembayaran {
    Tunai,
    Transfer(String),
    EWallet(String),
}

match

match sangat penting di Rust.

let status = StatusPesanan::Dikirim;

match status {
    StatusPesanan::Diproses => println!("Pesanan sedang diproses"),
    StatusPesanan::Dikirim => println!("Pesanan sedang dikirim"),
    StatusPesanan::Selesai => println!("Pesanan selesai"),
}

Semua kemungkinan harus ditangani.

Option

Rust tidak punya null biasa. Sebagai gantinya, ada Option<T>.

let nama_tengah: Option<String> = None;

Contoh:

match nama_tengah {
    Some(nama) => println!("Nama tengah: {}", nama),
    None => println!("Tidak ada nama tengah"),
}

Exercise

  1. Buat struct Buku dengan field judul, penulis, dan tahun.
  2. Tambahkan method untuk menampilkan ringkasan buku.
  3. Buat enum PeranPengguna dengan beberapa varian.
  4. Gunakan match untuk mencetak hak akses berdasarkan peran.

Challenge

Buat enum Bentuk dengan varian:

  • Persegi(u32, u32)
  • Lingkaran(f32)

Lalu buat fungsi yang menghitung luas berdasarkan match.