2012-10-28 12 views

Antwort

8

Nein, soweit offene Fragen scheint darauf hinzudeuten:

http://code.google.com/p/dart/issues/detail?id=3367

Und speziell:

.. Objects have identity, and you can only pass around references to them. There is no implicit copying. 
+4

Dank, und ich habe am Ende nur ein Klon-Methode selbst für die wenigen Klassen zu schreiben, wo ich eine Kopie (nicht nur eine Referenz) zu machen. Ich wurde von Ruby verwöhnt - dachte, das sei ein Standardsprachmerkmal. –

+3

es ist ein Standard-Sprachfeature = _ = " – srcspider

+0

Das ist albern. Brauchst du das nicht? – pjv

1

ich für nicht allzu komplexe Objekte erraten, können Sie die convert-Bibliothek verwenden:

import 'dart:convert'; 

und dann die JSON-Codierungs-/Decodierungsfunktion verwenden ionality

Map clonedObject = JSON.decode(JSON.encode(object)); 

Wenn Sie eine benutzerdefinierte Klasse als Wert in dem Objekt mit klonen, die Klasse muss entweder eine toJson() -Methode implementieren oder Sie haben eine toEncodable Funktion für die JSON.encode Verfahren bereitzustellen, und ein Wiederaufbereitungsverfahren für den Dekodierungsaufruf.

3

Darts integrierte Sammlungen verwenden einen benannten Konstruktor namens "von", um dies zu erreichen. Sehen Sie diesen Beitrag: Clone a List, Map or Set in Dart

Map mapA = { 
    'foo': 'bar' 
}; 
Map mapB = new Map.from(mapA); 
+0

Dies funktioniert möglicherweise für eine einfache Map, aber es wird nicht für komplexere Karten wie .Ich hatte die gleiche Idee wie Sie, aber es hat nicht funktioniert. – Azael

+2

'aus 'ist ein Konstruktor. Verwenden Sie' new Map.from (mapA); ' –

Verwandte Themen