RustRustlings_exercise
Makro
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
- Makro adalah cara menulis kode yang menulis kode lain, yang dikenal sebagai metaprogramming.
- Makro dapat mengambil jumlah parameter yang bervariasi.
- Untuk mendefinisikan makro, kita menggunakan konstruksi
macro_rules!. - Anotasi
#[macro_export]menunjukkan bahwa makro ini harus tersedia setiap kali crate di mana makro didefinisikan dibawa ke scope. - Kita harus mendefinisikan makro atau membawanya ke scope sebelum memanggilnya dalam sebuah file, berbeda dengan fungsi yang dapat didefinisikan di mana saja dan dipanggil di mana saja.
- Referensi:
macros1.rs
macro_rules! my_macro {
() => {
println!("Check out my macro!");
};
}
fn main() {
// Fix the macro call by adding `!`.
my_macro!();
}-
Latihan ini sederhana, kita hanya perlu menambahkan
!saat memanggil makro.my_macro!();
macros2.rs
// Define macro before using it
macro_rules! my_macro {
() => {
println!("Check out my macro!");
};
}
fn main() {
my_macro!();
}- Latihan ini juga mudah.
- Kita hanya perlu memindahkan definisi makro sebelum fungsi
main.
macros3.rs
// Fix the compiler error without taking the macro definition out of this
// module.
mod macros {
// add export macro attribute
#[macro_export]
macro_rules! my_macro {
() => {
println!("Check out my macro!");
};
}
}
fn main() {
my_macro!();
}- Di latihan ini kita perlu mengekspor
my_macrosehingga dapat diakses di fungsimain. - Kita dapat melakukannya dengan menambahkan anotasi
#[macro_export]di definisimy_macro.
macros4.rs
#[rustfmt::skip]
macro_rules! my_macro {
() => {
println!("Check out my macro!");
}; // add `;`
($val:expr) => {
println!("Look at this other macro: {}", $val);
}; // add `;`
}
fn main() {
my_macro!();
my_macro!(7777);
}- Di latihan ini kita hanya perlu menambahkan
;untuk setiap statement aturan makro.
Edit on GitHub
Last updated on