Tôi không thích sử dụng một mảng được lập chỉ mục vì không có lý do nào khác ngoài tôi nghĩ rằng nó trông xấu xí. Có cách nào gọn gàng để tổng hợp với một hàm ẩn danh? Có thể làm điều đó mà không sử dụng bất kỳ biến bên ngoài nào không?Cách sạch nhất để nhận tổng số trong bộ sưu tập/danh sách trong Dart là gì?
10
A
Trả lời
11
Dart tại iterables có chức năng giảm (https://code.google.com/p/dart/issues/detail?id=1649), do đó bạn có thể làm một số tiền mà không cần xác định hàm nếp gấp của riêng bạn:
var sum = [1, 2, 3].reduce((a, b) => a + b);
4
Không có một cách sạch để làm điều đó bằng cách sử dụng các thư viện lõi như bây giờ, nhưng nếu bạn cuộn của riêng bạn foldLeft sau đó là
main() {
var sum = foldLeft([1,2,3], 0, (val, entry) => val + entry);
print(sum);
}
Dynamic foldLeft(Collection collection, Dynamic val, func) {
collection.forEach((entry) => val = func(val, entry));
return val;
}
Tôi đã nói chuyện với đội Dart về việc thêm foldLeft đến các bộ sưu tập cốt lõi và tôi hy vọng nó sẽ sớm có mặt ở đó.
4
Tôi vẫn nghĩ rằng cách rõ ràng là sạch hơn và dễ hiểu hơn cho vấn đề cụ thể này.
num sum = 0;
[1, 2, 3].forEach((num e){sum += e;});
print(sum);
hoặc
num sum = 0;
for (num e in [1,2,3]) {
sum += e;
}
3
int sum = [1, 2, 3].fold(0, (previous, current) => previous + current);
hoặc với tên biến ngắn hơn để làm cho nó chiếm ít phòng:
int sum = [1, 2, 3].fold(0, (p, c) => p + c);
Các vấn đề liên quan
- 1. nhận tổng số tài liệu phụ trong bộ sưu tập
- 2. Tổng số mục trong bộ sưu tập
- 3. typedef trong Dart là gì?
- 4. Trong Ruby, cách sạch nhất để lấy chỉ số của giá trị lớn nhất trong một mảng là gì?
- 5. Cách nhanh nhất để tổng hợp một bộ sưu tập trong Scala
- 6. Cách tốt nhất để dọn sạch thư mục là gì?
- 7. Cách tốt nhất để viết các bài kiểm tra đơn vị trong Dart là gì?
- 8. Magento - Phương pháp hiệu quả nhất để nhận số lượng bộ sưu tập
- 9. Cách tốt nhất để chuyển đổi bộ sưu tập phi chung chung thành một bộ sưu tập chung là gì?
- 10. Cách sạch nhất để hiển thị đối tượng java.util.Calendar trong JSF là gì?
- 11. Bộ sưu tập nhanh nhất trong C# để triển khai hàng đợi ưu tiên là gì?
- 12. Cách sạch nhất để viết chuỗi đa dòng trong JavaScript là gì?
- 13. Mẫu Express/EJS bên trong, cách sạch nhất để lặp qua một mảng là gì?
- 14. Làm cách nào để mở rộng Danh sách trong Dart?
- 15. Nhận tổng số hàng trong Entity Framework
- 16. Xóa sạch mọi vòng lặp lặp lại. Cách hiệu quả nhất của bộ nhớ là gì?
- 17. Làm cách nào để tìm danh sách trong danh sách các danh sách có tổng số phần tử lớn nhất?
- 18. Cách tốt nhất để thể hiện danh sách bất biến trong .NET là gì?
- 19. Cách sạch nhất để tìm một trận đấu trong danh sách
- 20. Cách tạo id duy nhất trong Dart
- 21. Cách tốt nhất để tạo một mô hình 'được chọn' trong bộ sưu tập Backbone.js là gì?
- 22. Thế hệ trong Bộ sưu tập rác là gì?
- 23. Cách sạch nhất để sắp xếp kết quả truy vấn "mô tả bảng" là gì?
- 24. Cách tốt nhất để thêm phần tử đơn vào bộ sưu tập IEnumerable là gì?
- 25. Cách ngắn nhất để đếm số lượng mục trong bộ tạo/trình lặp là gì?
- 26. Cách tốt nhất/sạch nhất để thực hiện thử nghiệm A-B trong asp.net MVC là gì?
- 27. Cách nhận dấu thời gian trong Dart?
- 28. Loại bộ sưu tập cơ bản trong Scala là gì?
- 29. Cách tiếp cận thành ngữ nhất đối với các bộ sưu tập đa chỉ mục trong Haskell là gì?
- 30. Sự khác nhau giữa Bộ sưu tập và Danh sách trong Java là gì?
Điều này có thể được giải quyết bằng cách thêm chức năng chèn vào giao diện bộ sưu tập như trong Ruby. –
Đó là một số mã rất đẹp, Lars. Không chỉ là những gì tôi đang tìm kiếm, bây giờ tôi hiểu gấp. –
Bạn chắc chắn có thể làm điều đó với một hàm ẩn danh, có hoặc không có bất kỳ mã thư viện nào để làm điều đó, chỉ bằng cách gạch chân mã trong foldLeft ở trên. Và bạn sẽ luôn luôn cần một biến, trừ khi bạn quá thông minh với đệ quy. Ngoài ra, bạn cũng có thể chỉ cần làm điều đó với một cho (var mỗi trong ...) thay vì forEach, và áp dụng các chức năng trong cơ thể của vòng lặp for. Hoặc là làm việc. –