级联和链接之间的区别是什么

what is the difference between cascading and chaining

本文关键字:区别 是什么 之间 链接 级联      更新时间:2024-04-03

我刚从一个论坛上找到关于级联的。问题是级联在粪便中意味着什么。我试图在谷歌上找到答案,也试图找到一些其他关于if的stackoverflow线程,但我做不到。我刚找到这个链接http://en.wikipedia.org/wiki/Method_cascading

我知道什么是链接,我在javascript、jquery和其他语言中使用过它,但我不理解链接和级联之间的区别。有人能帮我吗?或者有人能提供一些有用的链接吗?

Chaining是返回下一次调用中使用的方法调用结果的地方。

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

您链接的维基百科页面上的定义非常清晰:

给定一个方法调用a.b(),在执行调用后,方法级联将此表达式计算到左侧对象a(如果发生了变异,则使用其新值),而方法链接将此表达式评估到右侧对象。

这意味着,a.b()使用方法级联返回一个突变的a实例。a.b()通过方法链接返回与b()不同的内容。

所以,这就是级联方法:

class YourClass {
    public YourClass b() {
        // do stuff
        return this;
    }
    public YourClass c() {
        // do stuff
        return this;
    }
}

允许:CCD_ 6。

这就是方法链接:

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() {
    }
}

允许:CCD_ 7。

编辑:我回滚了以前的编辑。看起来上面的内容是正确的,而且术语没有被错误地翻转。