Tôi đã lướt qua số language documentation và có vẻ như Google Dart không hỗ trợ mixin (không có các đối tượng phương thức trong giao diện, không có nhiều thừa kế, không có mô-đun giống Ruby). Tôi có đúng về điều này không, hoặc có cách nào khác để có chức năng mixin giống như trong Dart không?Google Dart có hỗ trợ mixin không?
Trả lời
Tôi vui mừng thông báo rằng câu trả lời là có!
Một mixin thực sự chỉ là delta giữa một phân lớp và một lớp cha. Sau đó bạn có thể "trộn" đồng bằng đó với một lớp khác.
Ví dụ, hãy xem xét lớp trừu tượng này:
abstract class Persistence {
void save(String filename) {
print('saving the object as ${toJson()}');
}
void load(String filename) {
print('loading from $filename');
}
Object toJson();
}
Sau đó bạn có thể kết hợp này vào các lớp khác, như vậy tránh được tình trạng ô nhiễm của cây thừa kế.
abstract class Warrior extends Object with Persistence {
fight(Warrior other) {
// ...
}
}
class Ninja extends Warrior {
Map toJson() {
return {'throwing_stars': true};
}
}
class Zombie extends Warrior {
Map toJson() {
return {'eats_brains': true};
}
}
Hạn chế về định nghĩa mixin bao gồm:
- không Phải khai báo một constructor
- lớp cha là Object
- Không chứa các cuộc gọi đến siêu
Một số đọc thêm:
Không, nó không hỗ trợ mix-in (chưa): https://groups.google.com/a/dartlang.org/group/misc/msg/0865bc828bc248e4
Edit:
Đội Dart có bây giờ released their proposal for Mixins, bản gốc issue for Mixins was here.
Nó chưa được thực hiện, nhưng trong khi chờ đợi tôi đã phát hành một thư viện mở rộng cho mixins Dart trong đó bao gồm một cổng của thư viện tiện ích chức năng phổ biến Underscore.js: https://github.com/mythz/DartMixins
- 1. Dart có hỗ trợ lập trình chức năng không?
- 2. Trình chuyển đổi JavaScript của Google Dart có hỗ trợ các trình duyệt cũ hơn không?
- 3. Có bất kỳ kế hoạch chính thức nào để hỗ trợ Dart trên Google App Engine không?
- 4. Dart có hỗ trợ việc sử dụng các thư viện JavaScript hiện có không?
- 5. PowerShell có hỗ trợ OOP không?
- 6. Google AppEngine không hỗ trợ FileOutputStream
- 7. Google App Engine có hỗ trợ ftp không?
- 8. Google Drive api có hỗ trợ oauth chân không?
- 9. Hỗ trợ Mã VS2010 có hỗ trợ nUnit không?
- 10. Google Maps và DART
- 11. PlayN được Google hỗ trợ bao nhiêu?
- 12. Tiện ích mở rộng Google Cast cho Google Chrome có hỗ trợ 1080p không?
- 13. Hỗ trợ Google App Engine và Django
- 14. html5 SaveAs hỗ trợ trong google chrome
- 15. Khu vực Google Dart?
- 16. DART có hỗ trợ các kết nối SSL/TLS của khách hàng chưa?
- 17. Hỗ trợ ngôn ngữ Dart không đồng bộ/đang chờ kiểu lập trình hoặc tương tự?
- 18. Có máy ảo Dart nào không?
- 19. Sắp xếp một ArrayController được hỗ trợ bởi Ember-Data thông qua sortProperty mixin
- 20. Weblogic có hỗ trợ CDI Beans không?
- 21. iPhone có hỗ trợ XML-RPC không?
- 22. Mono có hỗ trợ XAML không?
- 23. GCC có hỗ trợ lâu dài không?
- 24. VC++ có hỗ trợ _mm_malloc không?
- 25. AutoMapper có hỗ trợ LINQ không?
- 26. Arduino có hỗ trợ luồng không?
- 27. IE10 có hỗ trợ FormData() không?
- 28. TypeScript có hỗ trợ TouchEvent không?
- 29. S3 có hỗ trợ HTTP pipelining không?
- 30. GWT có hỗ trợ php không?
bạn có thể muốn nâng cấp lên câu trả lời hiện đúng :) –