2012-09-14 41 views
10

Dart có khái niệm về hằng số biên dịch. Một hằng số biên dịch-thời gian được phân tích cú pháp và tạo ra tại thời gian biên dịch và được chuẩn hóa.Tại sao Dart có biên dịch hằng số thời gian?

Ví dụ, đây là một constructor const cho Point:

class Point { 
    final num x, y; 
    const Point(this.x, this.y); 
} 

Và đây là cách bạn sử dụng nó:

main() { 
    var p1 = const Point(0, 0); 
    var p2 = const Point(0, 0); 
    print(p1 == p2); // true 
    print(p1 === p2); // true 
} 

Đây là một tính năng không rõ ràng, với dường như không có điểm tương đồng với tính năng bằng các ngôn ngữ động khác. Có các hạn chế đối với các đối tượng const, giống như tất cả các trường phải là cuối cùng và phải có một hàm tạo const.

Tại sao Dart có hằng số thời gian biên dịch?

Trả lời

10

Từ danh sách gửi thư, Florian Loitsch viết:

Thuộc tính hợp quy của các hằng số thời gian biên dịch là tốt đẹp, nhưng không phải là chính-lý do gì để có chúng. Lợi ích thực sự của thời gian biên dịch hằng số là, chúng không cho phép thực hiện tùy ý tại việc xây dựng và do đó có thể được sử dụng ở những nơi mà chúng tôi không muốn mã thi hành. Ví dụ, các trình khởi tạo biến tĩnh, ví dụ: bị giới hạn trong các hằng số biên dịch thời gian để tránh thực thi tại mức cao nhất. Tóm lại, họ đảm bảo rằng một chương trình bắt đầu với 'chính' và không phải ở một nơi nào khác.

Các vấn đề liên quan