2012-09-22 3 views
21

설명을 읽었으며 기능 유형별 별명임을 이해합니다.Dart의 typedef 란 무엇입니까?

하지만 어떻게 사용합니까? 함수 유형이있는 필드를 선언하는 이유는 무엇입니까? 그것을 언제 사용합니까? 어떤 문제가 해결됩니까?

나는 하나 또는 두 개의 실제 코드 예제가 필요하다고 생각합니다.

답변

38

다트의 typedef의 일반적인 사용 패턴은 콜백 인터페이스를 정의하고 있습니다. 예를 들어 :

안녕하세요
2012년 9월 22일 : 10 : 19 : 15.139 : 안녕하세요

위의 샘플을 실행

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

다음과 같은 출력을 산출 typedef 행은 LoggerOutputFunction이 String 매개 변수를 취해 void를 반환한다고 말합니다.

timestampLoggerOutputFunction은 해당 정의와 일치하므로 out 필드에 할당 될 수 있습니다.

다른 예가 필요한 경우 알려주십시오.

+0

이 좋습니다. 반환 형식 문자열이 좋은 예제가 있습니까? – Gero

+0

'new DateTime.now(). toString()'이 (가) 필요하지 않습니까? – diabolicfreak

관련 문제