2012-10-28 15 views

Odpowiedz

8

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. 
+4

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. –

+3

ma to być standardowa funkcja językowa = _ = " – srcspider

+0

To jest głupie, nie potrzebujesz tego? – pjv

1

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.

3

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); 
+0

To może działać dla prostej Map, ale nie będzie dla bardziej złożonych map, takich jak . Miałem taki sam pomysł jak ty, ale to nie działało. – Azael

+2

'from 'jest konstruktorem, użyj' new Map.from (mapA); ' –