2012-09-22 32 views
21

Tôi đã đọc mô tả và tôi hiểu rằng đó là bí danh loại hàm.typedef trong Dart là gì?

Nhưng làm thế nào để sử dụng nó? Tại sao khai báo các trường có kiểu hàm? Khi nào tôi sử dụng? vấn đề gì nó giải quyết?

Tôi nghĩ rằng tôi cần một hoặc hai ví dụ mã thực.

Trả lời

38

Mẫu sử dụng phổ biến của typedef trong Dart là xác định giao diện gọi lại. Ví dụ:

typedef void LoggerOutputFunction(String msg); 

class Logger { 
    LoggerOutputFunction out; 
    Logger() { 
    out = print; 
    } 
    void log(String msg) { 
    out(msg); 
    } 
} 

void timestampLoggerOutputFunction(String msg) { 
    String timeStamp = new Date.now().toString(); 
    print('${timeStamp}: $msg'); 
} 

void main() { 
    Logger l = new Logger(); 
    l.log('Hello World'); 
    l.out = timestampLoggerOutputFunction; 
    l.log('Hello World'); 
} 

Chạy ví dụ trên mang lại kết quả như sau:

Hello World
2012/09/22 10: 19: 15,139: Hello World

Dòng typedef nói rằng LoggerOutputFunction nhận một tham số String và trả về void.

dấu thời gianLoggerOutputFunction khớp với định nghĩa đó và do đó có thể được gán cho trường ngoài.

Hãy cho tôi biết nếu bạn cần một ví dụ khác.

+0

có vẻ tốt. Bạn có bất kỳ ví dụ tốt nơi chuỗi kiểu trả về là? – Gero

+0

Không phải là 'DateTime.now mới(). ToString() '? – diabolicfreak

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