我只是从一个关于级联的论坛中找到的。问题是级联在大便中意味着什么。我试图找到谷歌的答案,也试图找到一些其他stackoverflow线程,但我不能。我只是找到了这个链接http://en.wikipedia.org/wiki/Method_cascading
我知道什么是链接,我使用它,大多数是在javascript,jquery和其他语言中,但我不理解链接和级联之间的区别。有谁能够帮我?或者任何人都可以提供一些有用的链接吗?
答案 0 :(得分:4)
链接是返回下次调用时使用的方法调用结果的地方。
C#
Enumerable.Range(0,10).Skip(1).Aggregate(myList.First(),(result,listItem) => result += listItem));
//results in 45 being returned
当返回this
时,可以通过使用链接来实现级联(使得有时难以区分这两者)。 jQuery就是这样做的。
jquery的
$("#myId").css("background-color","blue").fadeIn().fadeOut();
//results in $("#myId") being returned
答案 1 :(得分:1)
您链接的维基百科页面上的定义非常明确:
给定方法调用ab(),在执行调用之后,方法级联将此表达式计算为左对象a(具有其新值,如果是mutated),而方法链接将此表达式计算为正确的对象。
这意味着,a.b()
返回带有方法级联的变异a
实例。 a.b()
使用方法链返回与b()
不同的内容。
所以,这是方法级联:
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();
。
编辑:我回滚了之前的编辑。看来上面的内容是正确的,并且术语没有错误地翻转。