我正尝试在Visual Studio代码上用 dart 编程,需要更多地了解 dart 的语法,以便能够编写所需的代码。
这些是我编写的类:
1.图书(定义书名、isbn、价格和可用性)
class Book {
// properties
late String _title;
late int _isbn;
late double _price;
bool _isAvailable;
....
}
- BookCatalog(导入前一个类并定义当前图书列表+添加新书的方法)
class BookCatalog{
// no arrays, everything is a list
List<Book> _books = [];
...
}
- Main(导入先前的类并执行所需的输入)
我想更改的内容:
1.改进了BookCatalog类中的addBook方法,如果一本新书与现有图书具有相同的ISBN,则不添加新图书(当前确实如此)。(如果用户尝试添加具有相同ISBN的图书,则可能给予“false”消息)
// adds a book to the store
void addBook(book) {
_books.add(book);
}
1.改进BookCatalog类中的printBookCatalog方法,以便仅打印可用的图书,而不是添加到存储中的所有图书。
// Print books contained in the catalog
void printBookCatalog() {
print("List of Books:");
for (var book in _books) {
print(book);
}
}
1.改进BookCatalog类中的getBook方法,* 实际上 * 通过ID获取图书,因为它现在不工作。
// Get a book by id
Book getBook(int place) => _books[place];
型
1.改进了BookCatalog类中的calculateAvgPrice方法,用于计算图书的平均价格,但目前为止它还不能正常工作
// NEW, calculates average price of books
Book calculateAvgPrice(double price) {
for(var book in _books) {
sum += book.Price;
}
return sum / _books.length;
}
1.在BookCatalog类中创建一个新方法以从目录中删除图书
答案可能是,但我不确定:
// deletes book from the catalog
void deleteBook(book) {
_books.remove(book);
}
任何帮助,解释,例子或外部来源阅读了 dart 将不胜感激!
(特别是针对我的具体案例的例子)
1条答案
按热度按时间xuo3flqw1#
我建议先通过Dart Language Tour。
(Side注:ISBN有前导零和连字符,所以最好使用
String
代替int
)在
BookCatalog
类中,可以使用Map
代替List
:1.这里我假设这两个类都在同一个文件中,否则访问私有成员将不起作用,因此您必须有可用的公共getter。
1.缺少
if
条件。1.假设您所指的
id
是它的ISBN,它返回一个可以为空的Book?
,因为该ISBN可能在目录中不存在。1.这个函数的返回类型是
double
,而不是Book
,因为它是平均价格。你也不需要为这个函数提供任何参数。而且你需要在使用它之前先定义sum变量!1.假设您要按ISBN删除图书: