热门问题
时间线
聊天
视角
方法链式调用
来自维基百科,自由的百科全书
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