我在一个论坛上了解到关于级联的信息。问题是在面向对象编程中级联的含义是什么。我试图在谷歌上找到答案,也尝试在stackoverflow的一些帖子中找到答案,但是没有成功。我只找到了这个链接http://en.wikipedia.org/wiki/Method_cascading
我知道什么是链式调用,我经常在JavaScript、jQuery和其他编程语言中使用它,但我无法理解链式调用和级联之间的区别。有人可以帮助我吗?或者有人可以提供一些有关此问题的有用链接吗?
我在一个论坛上了解到关于级联的信息。问题是在面向对象编程中级联的含义是什么。我试图在谷歌上找到答案,也尝试在stackoverflow的一些帖子中找到答案,但是没有成功。我只找到了这个链接http://en.wikipedia.org/wiki/Method_cascading
我知道什么是链式调用,我经常在JavaScript、jQuery和其他编程语言中使用它,但我无法理解链式调用和级联之间的区别。有人可以帮助我吗?或者有人可以提供一些有关此问题的有用链接吗?
class YourClass {
public YourClass b() {
// do stuff
return this;
}
public YourClass c() {
// do stuff
return this;
}
}
..这使得你可以使用yourClass.b().c();
进行操作。
..这就是方法链:
class YourClass {
public SomeOtherObject b() {
// do stuff
return new SomeOtherObject(this);
}
}
class SomeOtherObject {
private YourClass _owner;
public SomeOtherObject(YourClass owner) {
_owner = owner;
}
public void c_onOtherObject() {
}
}
这段代码允许您使用yourClass.b().c_onOtherObject();
语法。
编辑:我撤销了之前的编辑。上面的代码是正确的,术语没有错误地颠倒。
链接是指将方法调用的结果返回以在下一次调用中使用。
C#
Enumerable.Range(0,10).Skip(1).Aggregate(myList.First(),(result,listItem) => result += listItem));
//results in 45 being returned
this
时(有时很难区分两者)。jQuery就是这样做的。$("#myId").css("background-color","blue").fadeIn().fadeOut();
//results in $("#myId") being returned