Przeszedłem przez language documentation i wydaje się, że Google Dart nie obsługuje mixin (bez ciał metod w interfejsach, bez dziedziczenia wielokrotnego, bez modułów typu Ruby). Czy mam rację co do tego, czy istnieje inny sposób na funkcjonalność podobną do mixina w Dart?Czy Google Dart obsługuje miksowanie?
Odpowiedz
Cieszę się zgłosić, że odpowiedź brzmi: tak!
Mieszanka jest tak naprawdę tylko różnicą pomiędzy podklasą i nadklasą. Następnie możesz "miksować" tę deltę z inną klasą.
Na przykład, rozważmy tę abstrakcyjną klasę:
abstract class Persistence {
void save(String filename) {
print('saving the object as ${toJson()}');
}
void load(String filename) {
print('loading from $filename');
}
Object toJson();
}
Następnie można mieszać to do innych klas, unikając w ten sposób zanieczyszczenia drzewa dziedziczenia.
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};
}
}
Ograniczenia dotyczące definicji wstawianej obejmują:
- nie musi zadeklarować konstruktor
- Nadklasa jest Object
- Zawiera żadnych połączeń Super
kilka dodatkowych czytania
Nie, to nie obsługuje mix-ins (jeszcze): https://groups.google.com/a/dartlang.org/group/misc/msg/0865bc828bc248e4
Edit:
Zespół Dart mają teraz released their proposal for Mixins, oryginalny issue for Mixins was here.
To nie jest jeszcze zaimplementowana, ale w międzyczasie mam zwolniony rozszerzalną bibliotekę wstawek dla Dart, który zawiera port popularnej underscore.js funkcjonalnej biblioteki użytkowy: https://github.com/mythz/DartMixins
- 1. Czy konwerter Google Dart JavaScript obsługuje starsze przeglądarki?
- 2. Czy program Dart obsługuje funkcjonalne programowanie?
- 3. Google Maps i DART
- 4. Google Dart Regions?
- 5. Porównanie JavaScript z Google Dart
- 6. Czy Google zaczyna korzystać z Dart? Czy oni zbudowali kompilator zamknięcia (lub GWT) do Dart?
- 7. Czy aparat aplikacji Google obsługuje JDBC?
- 8. Czy Google Chrome obsługuje niestandardowe typy MIME?
- 9. Czy Google App Engine obsługuje ftp?
- 10. Czy Google App Engine obsługuje Python 3?
- 11. miksowanie log4cxx i log4net
- 12. Czy Dart ma harmonogram?
- 13. Przykładowy formularz do Google Dart Form
- 14. Android: Miksowanie wielu instancji AudioTrack?
- 15. Czy Node.js obsługuje paralelizm?
- 16. Czy Google Drive api obsługuje 2 legged oauth?
- 17. Czy Google Wallet dla towarów cyfrowych obsługuje automatyczne zwroty pieniędzy?
- 18. Czy interfejs API Dysku Google obsługuje Content-Range for Uploads?
- 19. Czy maszynopis obsługuje istniejące projekty z bibliotekami JavaScript?
- 20. Czy GWT obsługuje Java Swing?
- 21. Czy PetaPoco obsługuje wyliczenia?
- 22. Czy Mono obsługuje XAML?
- 23. Czy Winapi obsługuje globalnie?
- 24. Czy libspotify obsługuje oauth
- 25. Czy SystemVerilog obsługuje downcasting?
- 26. Czy Heroku obsługuje PHP?
- 27. Czy SQLite obsługuje SCOPE_IDENTITY?
- 28. Czy CMake obsługuje Python3?
- 29. Czy SQLAlchemy obsługuje buforowanie?
- 30. Czy SQLite obsługuje replikację?
może chcesz zaktualizować do aktualnie poprawną odpowiedź :) –