Czy istnieje sposób obsługiwany w języku, aby wykonać pełną (głęboką) kopię obiektu w rzutce?Jak mogę klonować obiekt (głęboką kopię) w Dart?
Tylko wtórne; czy jest na to wiele sposobów i jakie są różnice?
Dzięki za wyjaśnienia!
Czy istnieje sposób obsługiwany w języku, aby wykonać pełną (głęboką) kopię obiektu w rzutce?Jak mogę klonować obiekt (głęboką kopię) w Dart?
Tylko wtórne; czy jest na to wiele sposobów i jakie są różnice?
Dzięki za wyjaśnienia!
Nie miarę otwarte kwestie zdaje się sugerować:
http://code.google.com/p/dart/issues/detail?id=3367
aw szczególności:
.. Objects have identity, and you can only pass around references to them. There is no implicit copying.
Chyba za niezbyt skomplikowanych obiektów, można korzystać z biblioteki konwersji:
import 'dart:convert';
a następnie użyj funkcji kodowania/dekodowania JSON ionality
Map clonedObject = JSON.decode(JSON.encode(object));
Jeśli używasz niestandardowej klasy jako wartość w obiekcie do klonowania, klasy albo musi wdrożyć metodę toJSON() lub trzeba dostarczyć toEncodable funkcję dla metody JSON.encode oraz metodę odradzania dla wywołania dekodowania.
Wbudowane kolekcje rzutki używają nazwanego konstruktora o nazwie "od", aby to osiągnąć. Zobacz ten post: Clone a List, Map or Set in Dart
Map mapA = {
'foo': 'bar'
};
Map mapB = new Map.from(mapA);
To może działać dla prostej
'from 'jest konstruktorem, użyj' new Map.from (mapA); ' –
Dzięki, a ja nie tylko zakończyć pisanie metoda sklonować sobie na kilka klas, gdy trzeba wykonać kopię (nie tylko przez odniesienie). Zostałem rozpieszczony przez Ruby - uważałem, że jest to standardowa funkcja językowa. –
ma to być standardowa funkcja językowa = _ = " – srcspider
To jest głupie, nie potrzebujesz tego? – pjv