2012-10-28 25 views

Trả lời

8

Không xa như mở dường như cho thấy:

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

Và đặc biệt:

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

Cảm ơn, và tôi đã chỉ kết thúc viết một phương pháp nhân bản bản thân mình cho vài lớp mà tôi cần phải tạo một bản sao (không chỉ là một tài liệu tham khảo). Tôi đã bị phá hỏng bởi Ruby - nghĩ rằng đây là một tính năng ngôn ngữ chuẩn. –

+3

giả sử là một tính năng ngôn ngữ chuẩn = _ = " – srcspider

+0

Điều này thật ngớ ngẩn. Bạn không cần điều này? – pjv

1

Tôi đoán cho các đối tượng không-quá-phức tạp, bạn có thể sử dụng thư viện chuyển đổi:

import 'dart:convert'; 

và sau đó sử dụng mã hóa/giải mã JSON không hợp lệ ionality

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

Nếu bạn đang sử dụng một lớp tùy chỉnh như một giá trị trong đối tượng sao chép, lớp hoặc cần phải thực hiện một phương pháp toJson() hoặc bạn phải cung cấp một chức năng toEncodable cho phương pháp JSON.encode và một phương pháp phục hồi cho cuộc gọi giải mã.

3

Bộ sưu tập được xây dựng sẵn Darts sử dụng một hàm tạo có tên là "từ" để thực hiện việc này. Xem bài đăng này: Clone a List, Map or Set in Dart

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

Điều này có thể làm việc cho một Bản đồ đơn giản, nhưng nó sẽ không cho các bản đồ phức tạp hơn như .Tôi đã có ý tưởng tương tự như bạn, nhưng nó đã không hoạt động .. – Azael

+2

' 'là một hàm tạo, sử dụng' map.from mới (mapA); ' –