问题标签 [method-chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
332 浏览

php - PHP:防止链式方法返回?

对于一个返回值的非常简单的 PHP 类的方法链接,我有些头疼,有时需要经过解密过程:

get方法是返回所在的位置。因此,对第二行上的方法的调用decrypt在当前状态下不会起作用。

我可以做些什么来设置该get方法仅在没有链接到它时才返回,或者重构此代码的最佳方法是什么?

0 投票
2 回答
692 浏览

validation - 编写支持流畅接口(调用链)的 C# 方法参数验证的问题

我正在尝试编写一个可以链接的通用方法参数验证功能(流利的接口)以附加越来越多的验证/检查,例如:

我想在使用它们之前使用这个帮助类来测试某些值的方法参数(大部分时间null都会被测试)。

现状_

我首先开始编写静态辅助类,但没有使用如下Create()方法:

但这不允许链接。这就是为什么我创建了一个Create()方法来返回可以被链式扩展方法使用的东西。

问题

  1. 我想避免多次Compile()调用,所以基本上我的Create()方法应该返回Func<T>,而拒绝方法应该是Func<T>.
  2. 如果我Create()确实返回Func<T>,我没有机会读取应该提供给各种异常的参数名称(使用MemberExpression)。
  3. 如果我返回Expression<Func<T>>,我将不得不调用Compile()每个Reject扩展方法。

问题

  1. 是否有已经进行这种链接的 C# 库?
  2. 如果没有,你建议如何做到这一点?来自网络的任何示例都将受到热烈欢迎。

附加说明

我应该指出,复杂/长验证调用代码在这里不是一个选项,因为我当前的验证是这样完成的:

或者

它有两个主要缺点:

  1. 我一遍又一遍地重复相同的代码行
  2. 它使用魔术字符串

因此,验证应按照上述所需场景中的每次检查使用一个衬垫来完成。

0 投票
14 回答
3794 浏览

php - PHP:变量变量中的类属性链接

所以,我有一个结构类似于下面的对象,所有这些都作为stdClass对象返回给我

等等......(注意这些例子没有链接在一起)。

是否可以使用变量变量contact->phone作为直接属性调用$person

例如:

这不会按原样工作并抛出 aE_NOTICE所以我正在尝试制定一种替代方法来实现这一点。

有任何想法吗?

针对与代理方法相关的答案:

除了这个对象来自一个库之外,我会使用它来使用数组映射填充一个新对象,如下所示:

然后遍历地图以填充新对象。我想我可以代替映射器...

0 投票
4 回答
798 浏览

c# - 链接 c# 看起来像 jQuery 是个好主意吗?

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

这是一个好/坏主意吗?

更新:更多解释作为我正在考虑的“为什么”。 我有两件事:

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

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

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

初始化器很棒,但它们也将属性捆绑在一起,我希望属性集接近我将对它们执行的操作。

0 投票
3 回答
1002 浏览

c++ - 序列点和方法链

以下表达式通常用于演示未定义的未指定行为:

如果f()g()两者都对某些共享对象有副作用,则行为未定义未指定,因为执行顺序未知。f()可以在之前进行评估,g()反之亦然。

现在我想知道当你在一个对象上链接成员函数时会发生什么。假设我有一个类的实例,该实例被调用obj并且它有两个成员函数,foo()它们bar()都修改了对象。这些函数的执行顺序不可交换。在另一个之前调用它们的效果与反过来调用它们的效果不同。这两种方法都返回一个引用,*this以便可以像这样链接它们:

但这是未指明的行为吗?我在标准中找不到任何东西(诚然只是浏览)可以区分这个表达式和我在帖子顶部给出的表达式。两个函数调用都是完整表达式的子表达式,因此它们的执行顺序是未指定的。但肯定foo() 必须首先评估,以便bar()知道要修改哪个对象。

也许我遗漏了一些明显的东西,但我看不到序列点的创建位置。

0 投票
4 回答
1291 浏览

javascript - jQuery 链接比单独的语句更快?

编写对 jQuery 函数的单独调用还是使用单个链更快?如果添加解释为什么一个比另一个更快,将不胜感激:-)

一个例子:

快/慢于

0 投票
1 回答
1704 浏览

c++ - 在不同的类继承级别调用一系列函数

鉴于:

所以,

这将起作用,因为Baz()包含所有方法,包括Method2(), Barcontains Method1();

但是,由于返回类型,这似乎是一个坏主意 -Method1()在调用更复杂之前在第一个继承级别访问更简单时Method3()并且必须将此调用保持在单行中。

另外,有人告诉我,将其中一个放入try.. catch.. throw其中Method's偶尔会退出链,而不会以错误的值调用 next 方法。这是真的?

那么如何在 C++ 中正确实现方法链呢?

0 投票
1 回答
60 浏览

ruby-on-rails - 有一个更好的方法吗?即更好地链接命名范围

这段代码运行良好,但我正在查看它并认为它可能更清洁。也许有一种更惯用的 ruby​​ / rails 方式来做到这一点?顺序很重要,因为 member_of 范围必须在最后但在分页之前(返回集合而不是范围)

这样做的一个优点是很清楚发生了什么

如果参数字符串是这样的:

然后它应该产生这个

0 投票
4 回答
155 浏览

.net - Constructors calling other constructors: any performance issues?

In an application where performance is crucial, would there be any noticeable advantage of Scenario 1 (completely separate constructors) vs. Scenario 2 (chain-calling constructors)?

Scenario 1

Scenario 2

0 投票
3 回答
1099 浏览

visual-studio-2010 - 是否可以在 VS 的方法链中设置断点,如果可以,如何设置?

给定代码

是否可以设置断点,以便在 Method1() 执行之后,但在 Method2 之前暂停执行,而无需转到 Method2 的定义并在那里放置断点?当我这样做时,断点出现在'a'处。