آموزش زبان Rust - قسمت 12 - Implementation Blocks
نویسنده: کیانوش درتاج
تاریخ: ۱۴۰۲/۰۱/۲۲ ۱۰:۵۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
struct Product {
name: String,
price: f32,
in_stock: bool,
} impl Product {
fn calculate_sales_tax(&self) -> f32 {
self.price * 0.1
}
} fn main() {
let book = Product {
name: String::from("Book"),
price: 28.85,
in_stock: true,
};
let sales_tax = book.calculate_sales_tax();
println!("Sales tax: {}", sales_tax);
} fn calculate_sales_tax(&self) -> f32 {
self.price * 0.1
} fn set_price(&mut self, price: f32) {
self.price = price;
} fn buy(self) {
let name: String = self.name;
println!("{} was bought", name);
} Associated Functions
Associated functions از کلمه کلیدی self استفاده نمیکنند و با استفاده از سینتکس :: فراخوانی میشوند. با این حال، هنگام فراخوانی توابع مرتبط در متدهایی که از self استفاده میکنند، '.' بجای آن از سینتکس '::' استفاده میشود:
impl Product {
fn new(name: String, price: f32) -> Product {
Product {
name,
price,
in_stock: true,
}
}
} اکنون، میتوانیم یک نمونه محصول را با استفاده از تابع جدید مرتبط ایجاد کنیم:
fn main() {
let book = Product::new(String::from("Book"), 30.0);
}