标签: method-chaining

jQuery是否采用了向后方法进行方法链接?

只是我发现下面的代码本质上是倒退的吗?

我正在使用此帖子作为参考.

// create the inner div
var $inner = $("<div>inner</div>")

   // append it to a new outer div
   .appendTo("<div>outer</div>")

   // next change the jQuery chain to the "outer" div 
   .parent()

      // append the outer div to the body
      .appendTo("body")

   // finally, go back to the last destructive command, 
   // giving us back a pointer to the "inner" div
   .end();
Run Code Online (Sandbox Code Playgroud)

我最初的方法是抓住身体,然后在身体外面附上一个外层,然后在内部附加一个内部.

接近它然后跳过层次结构,parent ()只是让我觉得有点好奇......

jquery method-chaining

2
推荐指数
1
解决办法
483
查看次数

System.out.println - 这个方法是用Java链接的吗?

我想知道以下Java代码:

"的System.out.println".我是对的:

"系统"是一个静态类.".out"是类"系统"的方法.这是我对".println"感到困惑的一点 - 这个方法是什么类/对象?

此外,这个概念被称为"方法链"吗?

谢谢

GF

java static-methods method-chaining

2
推荐指数
1
解决办法
2047
查看次数

如何创建PHP方法链接?

我见过其他对象这样做:

$obj->method1()->method2();
Run Code Online (Sandbox Code Playgroud)

我怎么做?每个函数只是修改对象的指针还是返回指针?

我不知道这种风格的正确用语 - 如果有人能帮助我,那就太棒了.

php object method-chaining

2
推荐指数
1
解决办法
141
查看次数

如何在PHP5中构建多oop函数

我在PHP5中有一个关于OOP的问题.我看到越来越多的代码编写如下:

$object->function()->first(array('str','str','str'))->second(array(1,2,3,4,5));
Run Code Online (Sandbox Code Playgroud)

但我不知道如何创建这种方法.我希望有人能在这里帮助我,:0)非常感谢.

php oop method-chaining

2
推荐指数
1
解决办法
464
查看次数

方法链 - 有多少链式方法就足够了?

是否有关于何时停止链接方法的指南,而是将链分解为多个表达式?

考虑例如这个Python代码,它构建一个字典,word为key,相应的count为值:

def build_dict(filename):
    with open(filename, 'r') as f:
        dict = defaultdict(int)

        for word in f.read().lower().split(): # too much?
            dict[word] += 1

        return dict
Run Code Online (Sandbox Code Playgroud)

链接3种方法好吗?通过分割表达式,我可以获得任何显着的好处吗?

python coding-style method-chaining

2
推荐指数
1
解决办法
2959
查看次数

链接c#看起来像jQuery一个好主意?

我正在考虑使用扩展方法链接ac#语句,看起来像下面的jQuery:

foo foo2 = 
  new foo().Title(foo1.Title)
  .Name(foo1.Name)
  .DoSomeStuff()
  .DoSomeMoreStuff();
Run Code Online (Sandbox Code Playgroud)

这是好主意吗?

public class foo
{
  public string Title {get;set;}
  public string Name {get;set;}
  public int Age {get;set;}

  public foo(){} 
}

public static class fooExtension
{
  public static foo Title(this foo source, string title)
  {
    source.Title = title;
    return source;
  }

 //and other extensions
}
Run Code Online (Sandbox Code Playgroud)

Upadate:更多解释为"为什么"我正在考虑这个问题. 我有两件事情在继续:

  1. 我从一个对象获取数据并使用它来设置另一个对象的属性.
  2. 我需要对这些属性执行一些操作.

所以我的初始代码看起来更像

foo2.bars = foo1.bars;
foo2.RemoveUnderage();
foo2.NotifyPatronsBarsAreFull();
Run Code Online (Sandbox Code Playgroud)

相反,我认为写作可能更具描述性:

foo2.bars(foo1.bars).RemoveUnderage().NotifyPatrons();
Run Code Online (Sandbox Code Playgroud)

初始化器很棒,但它们也将所有属性捆绑在一起,我希望属性集接近我将采取的操作.

c# extension-methods method-chaining

2
推荐指数
1
解决办法
793
查看次数

如何知道方法被调用了多少次?

假设我有这门课.

class foo{
  function a(){
     return $this; 
  }
}
Run Code Online (Sandbox Code Playgroud)

.

$O = new foo(); 
$O->a()
  ->a()
  ->a();
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以知道,在最后一个函数->a()之前它被调用了多少次?因此,我可以像'method ->a() has been called twice before this.' 我想要找到的那样输出,不使用增量值,如声明属性,然后递增增加它,每次在函数中调用它.

如果OOP中有一个可以提供此解决方案的隐藏功能,我只是跳来跳去

php oop method-chaining

2
推荐指数
1
解决办法
2492
查看次数

在PHP中杀死方法链

嗨我有一个像PHP的方法链

<?php
auth::('username') -> is_logged() -> doSomething();
//execute something
?>
Run Code Online (Sandbox Code Playgroud)

我想做的是如果用户没有登录,那么不调用doSomething()函数.一种方法是取消设置$ this,但这将产生一个错误ID,有任何其他方式来做到这一点.此外,我不能使用die(),因为它会停止编译器,并防止执行后编写的代码.最好的方法是什么,最好没有任何警告或错误,同时由于与该类相关的大量功能而尽可能少地进行更改.

php methods method-chaining

2
推荐指数
1
解决办法
62
查看次数

C++方法链接导致析构函数被调用两次

我有简单的c ++程序,它使用方法链接,我注意到析构函数只在链式调用中被调用两次.仅当链调用包含构造函数时才会发生这种情况.如果单独调用析构函数只调用一次.

代码如下:

class Foo {
public:
    Foo()   { cout << "-- constructor " << this << endl; }
    ~Foo () { cout << "-- destructor  " << this << endl; };

    Foo& bar() {
        cout << "---- bar call  " << this << endl;
        return *this;
    }
};

int main() {
    cout << "starting test 1" << endl;
    {
        Foo f = Foo();
    }
    cout << "ending test 1"   << endl << endl;
    cout << "starting test 2" << …
Run Code Online (Sandbox Code Playgroud)

c++ destructor method-chaining

2
推荐指数
3
解决办法
218
查看次数

如何在jQuery中保持DRY?

在jQuery中有一种方法可以保存常用的函数链以便稍后引用,以保持DRY编码风格吗?

例如,在以下代码中,我想引用链.closest('.row').closest('div').remove();:

$('#search-results .row .unsafe').closest('.row').closest('div').remove();
$('#search-results .warnings').closest('.row').closest('div').remove();
$('#search-results .textresults1:contains("Endpoint offline!")').closest('.row').closest('div').remove();
// lots more distinct selectors
Run Code Online (Sandbox Code Playgroud)

像这样的东西:

var bye = ".closest('.row').closest('div').remove()";

$('#search-results .row .unsafe').bye();
$('#search-results .warnings').bye();
$('#search-results .textresults1:contains("Endpoint offline!")').bye();
// more...
Run Code Online (Sandbox Code Playgroud)

我的问题仅涉及以这种方式重用函数链 - 即jQuery是否有一种方法来执行在变量中存储为字符串的函数链.我很欣赏任何代码示例都可以重写以避免需要,但这是一个不同的问题.我认为可能存在很多用于存储常用函数链的用例 - 例如,对于复杂的样式/动画例程.

[我知道可以修改第一个选择器以包含所有后续选择器,但是这样做是为了提高性能.#search-results包含成千上万<div>的,每个都有十几个元素.这样,模糊搜索最后完成(即松散文本匹配:contains),之前的选择器已经杀掉了几千行.此外,这个特定的代码取自我正在编写的Greasemonkey用户脚本,所以我没有选择直接在源,服务器端删除这些虚假结果 - 它不是我的服务器/网站]

javascript jquery method-chaining

2
推荐指数
1
解决办法
66
查看次数