Как лучше организовать список покупок
Правильно ли я понимаю, что чтобы создать приложение типа "список покупок" или подобное с набором одинаковых форм с набором одинаковых полей данных, нужно:
Нужно создать класс "Лист" с полями данных одного листа списка.
Создать массив экземпляров класса "лист".
Ну и работать с этими экземплярами.
Или есть другие, более удобные способы организации такого списка?
(язык Kotlin, Swift, Rust)
Ответы (1 шт):
Автор решения: Damir Hakimof
→ Ссылка
Добро пожаловать на Stack Overflow!
Твой вопрос не очень корректен, из-за чего я мог неправильно сформулировать свое решение, но вот что могу предложить на Rust:
#[derive(Debug)]
struct Item { // Твой "Лист" в вопросе
name: String,
quantity: u32,
category: String,
// Можно еще что-то добавить
}
/*
impl Item {...}
*/
struct ShoppingList { // Твой массив, хотя это динамический массив - вектор
items: Vec<Item>,
}
impl ShoppingList {
fn new() -> ShoppingList { // Создание списка покупок
ShoppingList { items: Vec::new() } // Он пустой изначально
}
fn add_item(&mut self, item: Item) { // Добавить в список значение
self.items.push(item);
}
fn remove_item(&mut self, name: &str) { // Удалить из списка значение
if let Some(index) = self.items.iter().position(|item| item.name == name) {
self.items.remove(index);
}
} // Если в списке нет такого продукта, то мы просто игнорируем это, можешь добавить обработку ошибок
fn display_list(&self) { // IO-формат вывода содержимого списка
if self.items.is_empty() {
println!("Shopping list is empty.");
} else {
println!("Shopping List:");
for item in &self.items {
println!("{:?}", item);
}
}
}
}
fn main() {
let mut shopping_list = ShoppingList::new();
shopping_list.add_item(Item {
name: String::from("Milk"),
quantity: 2,
category: String::from("Dairy"),
});
shopping_list.add_item(Item {
name: String::from("Bread"),
quantity: 1,
category: String::from("Grains"),
});
shopping_list.display_list();
shopping_list.remove_item("Milk");
shopping_list.display_list();
}