2014-10-05 46 views
1

在Dart中,功能是一流的。 文檔告訴我們,你可以創建一個變量,它是這樣的函數: 如何定義「功能」類型的變量? (使用可選打字)

var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!'; 

創建一個名爲「loudify」,需要一個String並返回另一個字符串函數。
如果我不事先哪個函數我想賦給變量知道,我能做到這樣的:

// define the variable 
var loudify; 

// later on set the variable 
loudify = (msg) => '!!! ${msg.toUpperCase()} !!!'; 

但我如何使用可選的打字讓我知道以後該變量是「函數」類型,並有輸入字符串和輸出字符串? 我建議這樣的事情,但是這不工作(DART編輯告訴我「未定義類‘功能’」):

// this gives a syntax error in the Dart editor 
function<String, String> loudify; 

那麼,什麼是正確的語法嗎?
問候,
亨德里克

回答

4

您可以使用typedef

typedef String OneString(String x); 
typedef String OneStringAndInt(String x, int y); 

void main() { 
    //var f = (String x) => '$x'; 
    var f = (String x, int y) => '$x$y'; 
    if(f is OneString) { 
    print(f('bla')); 
    } else { 
    print(f('bla', 10)); 
    } 
}