問題タブ [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.
validation - Problems writing C# method parameter validation that supports fluent interface (call chaining)
I'm trying to write a generic method parameter validation functionality that can be chained (fluent interface) to attach more and more validations/checks like:
I would like to use this helper class to test method parameters for certain values before using them (most of the time null
will be tested).
Current state of affairs
I first started writing static helper class without the Create()
method like:
But this doesn't allow chaining. That's why I created the Create()
method that would return something that can be used by chained extension methods.
The problem
- I would like to avoid multiple
Compile()
calls, so basically myCreate()
method should returnFunc<T>
and reject methods should be extension methods ofFunc<T>
. - If my
Create()
does returnFunc<T>
I don't get the chance to read parameter names that should be supplied to various exceptions (usingMemberExpression
). - If I return
Expression<Func<T>>
instead I will have to callCompile()
in eachReject
extension method.
Questions
- Is there a C# library that already does this kind of chaining?
- If not, what do you suggest how this should be done? Any examples from the web would be warmly welcome.
Additional note
I should point out that complex/long validation invocation code is not an option here, because my current validation is done like:
or
Which has two major drawbacks:
- I repeat the same lines of code over and over
- it uses magic strings
So validation should be done with a one liner per check as described above in the desired scenario.
php - PHP: 可変変数でのクラス プロパティ チェーン
したがって、以下のような構造のオブジェクトがあり、それらはすべてstdClass
オブジェクトとして返されます
など... (これらの例は互いにリンクされていないことに注意してください)。
contact->phone
の直接プロパティとして呼び出す変数変数を使用することは可能$person
ですか?
例えば:
これはそのままでは機能せず、スローされるE_NOTICE
ため、これを達成するための別の方法を考えようとしています。
何か案は?
プロキシメソッドに関する回答への回答:
そして、このオブジェクトがライブラリからのものであり、それを使用して次のように新しいオブジェクトに配列マップを設定していることを除いて:
次に、マップを foreach して新しいオブジェクトを設定します。代わりにマッパーを巻き込むことができると思います...
c# - c# をチェーンして jQuery のように見せるのは良い考えですか?
拡張メソッドを使用して ac# ステートメントをチェーンし、次のように jQuery のようにすることを考えています。
これは良い/悪い考えですか?
Upadate: 私がこれを検討している「理由」としての詳細な説明。 私は2つのことをしています:
- あるオブジェクトからデータを取得し、それを使用して別のオブジェクトのプロパティを設定しています。
- これらのプロパティに対して何らかのアクションを実行する必要があります。
だから私の最初のコードはもっと似ていた
代わりに、次のように記述した方がわかりやすいかもしれないと考えました。
イニシャライザは優れていますが、プロパティもすべてまとめてバンドルしているため、プロパティ セットを、実行するアクションに近づけたいと考えました。
c++ - シーケンスポイントとメソッドチェーン
次の式は、未定義の不特定の動作を示すためによく使用されます。
f()
とg()
両方が一部の共有オブジェクトに副作用をもたらす場合、実行の順序が不明であるため、動作は未定義で指定されていません。f()
前に評価されるg()
か、またはその逆の場合があります。
今、オブジェクトのメンバー関数をチェーンするとどうなるのだろうと思っていました。クラスのインスタンスがあり、そのインスタンスが呼び出されobj
、2つのメンバー関数がfoo()
あり、bar()
どちらもオブジェクトを変更するとします。これらの関数の実行順序は可換ではありません。前後に呼び出すことの効果は、逆に呼び出すことと同じ効果ではありません。どちらのメソッドもへの参照を返す*this
ため、次のようにチェーンできます。
しかし、これは不特定の振る舞いですか?この表現と私が投稿の上部に示した表現を区別するものは、標準には見つかりません(確かにスキャンスルーするだけです)。両方の関数呼び出しは完全式の部分式であるため、実行の順序は指定されていません。ただし、変更するオブジェクトがわかるように、最初に評価するfoo()
必要があります。bar()
明らかな何かが欠けているかもしれませんが、シーケンスポイントがどこに作成されているかわかりません。
javascript - jQueryチェーニングは個別のステートメントよりも高速ですか?
jQuery 関数への個別の呼び出しを作成するか、単一のチェーンを使用する方が高速ですか? 一方が他方よりも速い理由の追加説明があれば、それは大歓迎です:-)
例:
より速い/遅い
c++ - 異なるクラス継承レベルで関数のチェーンを呼び出す
与えられた:
それで、
これはBaz()
、、を含むすべてのメソッドが含まれているためMethod2()
、機能しBar
ますMethod1()
。
しかし、戻り型のため、これは悪い考えのようです-より複雑なを呼び出す前に最初の継承レベルでより単純にアクセスし、Method1()
この呼び出しを1行に保持する必要がある場合。Method3()
また、誰かが私にtry.. catch.. throw
、それらの1つに入れるMethod's
と、間違った値でnextメソッドを呼び出さずにチェーンを終了することがあると言いました。これは本当ですか?
では、C++でメソッドチェーンを適切に実装するにはどうすればよいでしょうか。
ruby-on-rails - これを行うより良い方法はありますか?つまり、名前付きスコープをより適切にチェーンします
このコードは正常に動作しますが、私はそれを見て、よりクリーンになる可能性があると考えています。おそらく、これを行うためのより慣用的なルビー/レールの方法がありますか? member_of スコープは最後に、ページネーション (スコープではなくコレクションを返す) の前に来る必要があるため、順序は重要です。
これの利点の 1 つは、何が起こっているのかが非常に明確であることです。
これは、params 文字列が次のようなものである場合:
次に、これを生成する必要があります
.net - 他のコンストラクターを呼び出すコンストラクター:パフォーマンスの問題はありますか?
パフォーマンスが重要なアプリケーションでは、シナリオ1(完全に別個のコンストラクター)とシナリオ2(チェーン呼び出しコンストラクター)の顕著な利点はありますか?
シナリオ1
シナリオ2
visual-studio-2010 - VS のメソッド チェーンにブレークポイントを設定することは可能ですか?
コードを考えると
Method1() が実行された後に実行が一時停止するようにブレークポイントを設定することはできますか? これを行うと、ブレークポイントが「a」に表示されます。
php - PHP クラスの関数チェーンで単純なエラー チェックを行うには?
クラス関数のチェーンでの使用が制限されていることを発見しました$class->setUser('foo')->getInfo()
(悪い例) が、チェーン内の呼び出しの 1 つから発生したエラーを処理する方法を理解するのに苦労しています。
たとえば、エラーが発生して false が返された場合setUser()
、返さ$this
れず、別の関数を呼び出すことができないため、エラーが表示されます。
私が実際に気付いたこと (これが間違っている場合は修正してください)、エラーが発生した場合に例外をスローすると、次の関数が実行されてエラーが発生するのをsetUser()
防ぐことができますか?getInfo()
これは、チェーンを使用しない場合でも、チェーンを使用するコードをデバッグできるように、少なくとも知っておくと便利な知識です。