2012-09-22 16 views
21

Açıklamayı okudum ve bunun bir işlev türü takma adı olduğunu anlıyorum.Dart'ta typedef nedir?

Ama bunu nasıl kullanabilirim? Neden bir işlev türü ile alanları bildiriyorsunuz? Ne zaman kullanırım? Hangi problem çözüyor?

Sanırım bir veya iki gerçek kod örneğine ihtiyacım var.

cevap

38

Dart'ta typedef'in genel kullanım şekli bir geri arama arabirimini tanımlamaktadır. Örneğin:

Merhaba Dünya
2012/09/22 10: 19: 15.139: Hello World

yukarıdaki örnek çalışan

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'); 
} 

aşağıdaki çıkışı sağlayan Yazılan satır, LoggerOutputFunction bir String parametresi aldığını ve void döndürdüğünü söylüyor.

timestampLoggerOutputFunction bu tanımla eşleşir ve böylece çıkış alanına atanabilir.

Başka bir örneğe ihtiyacınız varsa bildirin.

+0

iyi görünüyor. Dönüş tipi dizenin iyi bir örneğiniz var mı? – Gero

+0

Yeni DateTime.now(). ToString() 'olmalıdır? – diabolicfreak