热门问题
时间线
聊天
视角
方法鏈式調用
来自维基百科,自由的百科全书
Remove ads
方法鏈式調用(Method chaining),也稱為命名參數慣用法(named parameter idiom)或者方法鏈,是面向對象編程語言中多個方法被調用時的常用語法。每個方法都返回一個對象,允許在單個語句中將調用鏈接在一起,而無需變量來存儲中間結果。[1]方法鏈式調用是一種語法糖。[2]
類似的語法是方法級聯調用,即調用一個對象的多個方法的語法糖。方法級聯調用可以使用方法鏈式調用來實現,即讓每個方法返回當前對象本身(this)。方法級聯調用是流暢接口的一項關鍵技術,面向對象語言廣泛實現了方法鏈式調用,但實現了方法級聯調用的不多。鏈式和級聯調用都來自 Smalltalk語言。
雖然方法鏈式調用是語法,但它具有語義後果,即需要方法返回一個對象;如果通過方法鏈式調用實現級聯,這必須是當前對象本身。 這可以防止返回值被用於其他目的,例如返回錯誤值。
Remove ads
例子
一個常見例子是C++標準模板庫中的iostream,其中運算符<<
返回左參數對象,因此允許鏈式調用:
比較:
a << b << c;
等價於:
a << b;
a << c;
另一個例子是JavaScript使用內建的數組方法:
somethings
.filter(x => x.count > 10)
.sort((a, b) => a.count - b.count)
.map(x => x.name)
參見
- 流式接口
- 管道 (Unix)
- 嵌套 (計算機科學)
- 生成器模式
- 詛咒金字塔 (編程)
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads