2012-09-22 14 views
21

मैंने विवरण पढ़ा है, और मैं समझता हूं कि यह एक फ़ंक्शन-प्रकार उपनाम है।डार्ट में टाइपिफ़ क्या है?

  • एक typedef, या समारोह प्रकार उर्फ ​​एक समारोह प्रकार एक नाम है कि आप और जब खेतों की घोषणा का उपयोग कर सकते प्रकार वापसी देता है। जब एक फ़ंक्शन प्रकार किसी चर को असाइन किया जाता है तो एक टाइपपीफ टाइप जानकारी को बरकरार रखता है।

  • http://www.dartlang.org/docs/spec/latest/dart-language-specification.html#kix.yyd520hand9j

लेकिन मैं इसे कैसे प्रयोग करते हैं? फ़ंक्शन-प्रकार वाले फ़ील्ड्स को क्यों घोषित करना? मैं इसका इस्तेमाल कब करूं? यह किस समस्या को हल करता है?

मुझे लगता है कि मुझे एक या दो वास्तविक कोड उदाहरण चाहिए।

उत्तर

38

डार्ट में टाइपपीफ का एक सामान्य उपयोग पैटर्न कॉलबैक इंटरफेस को परिभाषित कर रहा है। उदाहरण के लिए:

नमस्ते विश्व
2012-09-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'); 
} 

ऊपर नमूना चल रहा है निम्न उत्पादन पैदावार टाइपपीफ लाइन कहती है कि LoggerOutputFunction एक स्ट्रिंग पैरामीटर लेता है और शून्य देता है।

टाइमस्टैम्प लॉगरऑटपुट फ़ंक्शन उस परिभाषा से मेल खाता है और इस प्रकार आउट फ़ील्ड को असाइन किया जा सकता है।

मुझे बताएं कि आपको एक और उदाहरण की आवश्यकता है या नहीं।

+0

अच्छा लग रहा है। आपके पास कोई अच्छा उदाहरण है जहां रिटर्न टाइप स्ट्रिंग है? – Gero

+0

यह 'new DateTime.now()। ToString()' होना चाहिए? – diabolicfreak

संबंधित मुद्दे