Dart語言是谷歌開發(fā)的一款編程語言,谷歌移動(dòng)開發(fā)框架Flutter就是使用該語言作為開發(fā)語言
Dart支持函數(shù)式編程,函數(shù)式編程可以實(shí)現(xiàn)的功能之一是currying,柯里化
currying是啥呢?
維基百科里給出的概念:是一種把接受多個(gè)參數(shù)的函數(shù)變換成接受一個(gè)單一參數(shù)(最初函數(shù)的第一個(gè)參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)。
概念讀起來很繞口,還是直接上例子吧
add(a) {
return (b) {
return a + b;
};
}
main() {
print(add(2)(3));
}
以上代碼實(shí)現(xiàn)的功能就是求值 a + b。
add方法接收一個(gè)參數(shù)a,返回一個(gè)函數(shù),該函數(shù)的參數(shù)是b,方法體是求a和b的和
采用lambda表達(dá)式的方式為:
add(a) {
return (b) => a + b;
}
再簡(jiǎn)化一下:
add(a) => (b) => a + b;
通過以下方式可以看到調(diào)用add(a),會(huì)返回一個(gè)函數(shù),該函數(shù)就是 (b) => a + b;
main() {
var add2 = add(2);
print(add2(3));
}