問題タブ [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.
terminology - 流暢なインターフェースとメソッドチェーンの違いは何ですか?
質問はタイトルと同じです。:)
ruby-on-rails - チェーン内の以前のメソッドにアクセスする (Ruby (on Rails))
従業員、マネージャー、および企業向けのクラスがあるとしましょう。これらは、期待どおりに継承されActiveRecord
、すべて関連付けられています。
Employee
クラスのインスタンスが 2 つありbob
、jane
. 二人とも同じ会社で働いていますが、マネージャーは異なります。
彼らは同じ会社で働いていますが、マネージャーが異なるため、電話をかけbob.company.x
たり、別の結果を得たりできるようにしたいと考えています。jane.company.x
x を従業員のメソッドとして定義して を呼び出すことを妨げる他の制限がありますがbob.company_x
、この例ではより簡単になることがわかります。
x のメソッド定義内で、どの従業員がこのメソッド チェーンを開始したかを知る方法はありますか?
java - Javaの長いメソッドチェーンとリファクタリング技術
Javaプログラマーは長いメソッドチェーンをどのように処理しますか?1つまたは2つのメソッドの結果が、複数のオブジェクトで呼び出される同じ長いメソッドチェーンに依存する場合があり、長いチェーンの1つまたは2つのローカライズされたインスタンスを処理するためだけに、クラスにメソッドを追加するのはやり過ぎのようです。ファーストクラス関数を使用する言語では、通常、長いメソッドチェーンを持つブロックで、ある種の1回限りの関数を定義して、いくつかのことを除外し、メソッドチェーンを短縮します。これで、Javaで同等のものは何でしょうか。
c++ - operator-> はポインターに対して「連鎖」していますか?
重複の可能性:
演算子のオーバーロード ->
やあ、
評価後に連鎖(再適用)されるのを見てきました。operator->()
たとえば、次のようになります。
これには、3 つを評価する必要がありoperator->()
ます - Foo::operator->()
、Bar::operator->()
および通常のポインター解決。
ただし、途中でポインターを使用すると機能しFoo::operator->()
ません。参照ではなくバーへのポインターを返すと、コンパイルされません。auto_ptr<auto_ptr<string>>
たとえば、同じことが起こります。
非過負荷に固有なoperator->()
ので、一度だけ適用され、連鎖は発生しませんか? を使用せずに以下のコードを動作させることは可能(*ptr2)-> ...
ですか?
ありがとう!
method-chaining - Esper:EPLクエリでのプロパティアクセスとメソッド呼び出しの連鎖
私は現在、いくつかのEsperEPLクエリを機能させるのに苦労しています。クエリは次のようになります。
EPLStatement
これをviaにコンパイルしようとするとEPAdministrator.createEPL()
、次の例外がスローされます。
com.espertech.esper.client.EPStatementException:ステートメントの開始中にエラーが発生しました:名前'a.center'でクラスを読み込めませんでした。インポートを確認してください
イベントクラスとクエリを次のように変更すると
それはうまくコンパイルされます。Esperはa.center.distance(...)
、クラス名とそれに続く静的メソッド呼び出しとして解釈a.distance(...)
されるようですが、オブジェクトに対するメソッド呼び出しとして解釈されますa
。
どうすればEsperに元のクエリを意図したとおりに解釈させることができますか(つまり、プロパティアクセスとそれに続くメソッド呼び出しとして)?
c++ - 連鎖ロギングステートメントがアトミックであることを確認する方法は?
オーバーロードされたロギング クラスがありますoperator<<
。だから私はこのようなことをすることができます:
ロガーは問題なくこれを行います。しかし、ロガーオブジェクトをスレッド間で共有したい。次に、次のようなものを出力したくありません。
したがって、operator<<
s のチェーン全体をロックする必要があります。これは RAII でできると思いますが、まだあまり考えていません。それまでの間、これを行う従来の方法はありますか? (マニピュレーターで入力を終了する以外は?)
java - グアバでの連鎖順序
私はグアバに少し慣れていません、そしてそれはスタイルです。私は間違いなくそれを掘り下げていますが、私がつまずき続けることの1つは、連鎖メソッドの順序です。私がこの問題を最も抱えていると思われるのは、化合物を使用する場合Ordering
です。私は自分自身に次のような質問をし続ける必要があります:
- どこへ
natural
行くの? nullFirst
(または最後の)どこに行きますか?- どっち
nullsFirst
がなに?(以下の例では、1つはホスト用、1つは姓用、もう1つは名用ですか?)
これが私が今取り組んでいたものの例です。面倒そうに見えますが、全部うまくまとめたかどうかはわかりません。私はそれをテストするためにいくつかのJUnitを持っています、そしてそれは大丈夫のようです、しかしそれらの風変わりな境界のケースは常にあります。
実際の質問について:これらのものがどのように実行されるかについて明確に定義されたルールはありますか?それは最後から最初のようですが、私はそれを伝えるのに苦労しています。
編集:私が置き換えようとしていた大きくて醜いコードを指摘したかっただけです:
c# - デリゲート シーケンスの複雑な相互作用を連鎖させる
これを尋ねるのは非常に複雑に感じます。解決策は簡単に思えますが、さらに多くのデリゲートから返されたデリゲート内のデリゲートのせん断的な気が遠くなるほど、私の脳はそれ自体で内破しました。
これ以上何もせずに、私は説明します:
シナリオは、翻訳デリゲート (Func[A, B]) と翻訳動作 (Func[A, Func[Func[A, B], B]]) があることです。
アイデアは、特定の翻訳の周りに、呼び出しを翻訳にラップする特定の一連の動作を持つことです。戻り値を変更することができます (B)。
これを完全に説明するモナドはおそらくいくつかありますが、おそらくいくつかのコードが何よりも役立ちます。
被害者:
動作デリゲート
それらを連鎖させ、変換関数を渡すことができる Func を返し、動作によってラップされる新しい変換関数を取得する関数
使用シナリオ
コード例では、動作の実装は何もせず、次の動作を呼び出します。変換の実装は単に新しい B を返します。
関数「チェーン」は問題の関数であり、動作を一緒にリンクできるかどうかはわかりませんでしたが、これが実際に機能することを証明するために、3 つの動作を具体的にチェーンする単純なソリューションをハードコーディングしました。
これは機能しますが、明らかに機能します。かなり役に立たない。
これに関するヘルプは本当に役に立ちます。これが既知のパターンまたはモナドであるかどうかに関する情報は非常に興味深いものです。このコードコードは一般化できるとは思えません。
前もってありがとう、スティーブン。
php - PHP:共有メソッドを使用したメソッドチェーン
これは私がしばらく考えていたものです。以下に示す例のように、一連のメソッドをチェーン化します。
メソッドチェーンの概念は簡単ですが、私が望むのは、すべての動物を同じadd
メソッドで追加することです。では、メソッド内に追加する動物の種類をどのように把握する必要がありますadd
か?
php - PHP:チェーンされたメソッドが返されないようにしますか?
値を返す非常に単純な PHP クラスのメソッド チェーンに関して、いくつかの頭痛の種があります。
get
メソッドは、戻り値が存在する場所です。decrypt
したがって、 2 行目のメソッドの呼び出しは、現在の状態では機能しません。
何もチェーンされていない場合にのみメソッドを返すようにセットアップすることはできますかget
、またはこのコードをリファクタリングする最良の方法は何ですか?