問題タブ [duck-typing]
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.
c# - IEnumerableで動的Selectを作成するにはどうすればよいですか?実行時に?
オブジェクトがあるIEnumerable<T>
場合T
、実行時にプロパティ名の1つの名前を文字列として知っている場合、そのオブジェクトから特定のプロパティを選択するにはどうすればよいですか?
例えば:
本質的に、私は明らかに実行しているだけですが、最初に作成されるタイミングを制御できない場合は、実行時にexternalIEnumerable.Select(x=> x.Foo);
これを実行する必要があります。Select
-
回答: AlanTの回答に基づいて、私が実際に行ったことは次のとおりです。
呼び出すCompile
とIQueryableが列挙され、データベースが不必要にヒットしたため、式として保持しました。それで、それを使うために、私はただ次のことをします:
c# - IEnumerable で動的マルチプロパティ Select を作成するにはどうすればよいですか実行時に?
昨日、非常によく似た質問をしましたが、受け入れた回答がすべての問題を解決するとは限らないことに今日まで気づきませんでした。次のコードがあります。
次のように使用されます。
これにより、 から主キーを引き出すことができますIQueryable<TUnknown>
。問題は、このコードが 1 つの主キーでしか機能せず、複数の PK のサポートを追加する必要があることです。
SelectExpression
では、上記のメソッドを適応させてIEnumerable<string>
(主キー プロパティ名のリスト) を取得し、それらのキーを選択する式をメソッドに返させる方法はありますか?
つまり、次のようになります。
私の選択は、(実行時に)次のことを行う必要があります。
delphi - Delphi 2007でダックタイピングしますか?
質問:
Delphi 2007でダックタイピングを行う方法はありますか(つまり、ジェネリックスと高度なRtti機能なしで)?
Delphi 2010以降のダックタイピングリソース:
- ARCANAによるグーグルプロジェクトのダックダックデルファイ。
- DanieleTetiによるDelphiでのダックタイピング。
- StefanGlienkeによるDelphiでのAOPとダックタイピング。
最終編集:
私は上記のリソースをさらに掘り下げ、ここに投稿されたすべての回答を調査しました。
私は自分の要件を洗練し、この質問へのフォローアップ投稿をすることになります。
python - __getitem__() のパラメータとしてタプルを使用するには?
dict をラップするカスタム クラスを作成しています。そのため、 getitemを実装したいと考えています。また、この dict ではタプルをキーとして使用します。しかし、タプルを getitem に渡そうとすると、Python が KeyError をスローします。タプルをgetitemに渡すと、タプルが int にキャストされているようです:
コード:
出力:
Board は、Python が満足するためにマッピング タイプから継承する必要がありますか? また、Python が最初にこのキャストを実行しようとするのはなぜですか?
scala - タイプをscalaのトレイトに拡張するにはどうすればよいですか?
ダックタイピングに使用するタイプがあります。
タイプをインターフェースするように強制されるトレイトを書きたいのですが、これは機能しません:
一方、タイプtの代わりにトレイトt1を書くと、ダックタイピング機能が失われます。
では、ダックタイピングとインターフェースの両方をどのように使用できますか?
ruby - Ruby プログラマーはどのように型チェックを行うのですか?
ruby には型がないので、Ruby プログラマーは関数が正しい引数を受け取るようにするにはどうすればよいでしょうか? 現在、if object.kind_of
/instance_of
ステートメントを繰り返して実行時エラーをチェックして発生させていますが、これは醜いです。これを行うためのより良い方法があるはずです。
python - Python でダックタイピングを行う場合、isinstance をテストする必要がありますか?
equals テストが必要な Python クラスがあります。Pythonはダックタイピングを使用する必要がありますが、(より良い/より正確に) isinstance テストをeq関数に含めるか除外しますか? 例えば:
c - プレーン C でのダックタイピングの適用
私のオープンソースのプレーンな C コードでは、次の単純な構造を使用して、文字列バッファーからデータを読み取り、解析します。
この単純な APIを使用してバッファにアクセスします。
注:現在の実装を壊すことなくltsLS_unread
に置き換えることができます。return (ltsLS_good(ls)) ? SIZE_MAX : 0
このコードは、一部のデータを文字列バッファからカスタム形式でロードするために使用されます。(こちらの方がわかりやすいかもしれません。)
ここで、文字列バッファーからではなく、FILE
ポインターからデータをロードする必要があります。
実装をコピーして貼り付けるのは嫌いで、代わりに既存のコードを再利用したいと考えています。(もちろん、リファクタリング/適応は問題ありません。)
これは C++ の教科書的なものですが、実行時のオーバーヘッドを発生させずに単純な C でそれを行うにはどうすればよいでしょうか?
APIを使用する関数の例を次に示します。この関数はlts_LoadState
コピー アンド ペーストできません (もちろん、文字列バッファと の両方をサポートするように変更することはできますFILE *
)。
django - Django:入力用のレコードまたはレコードのスラッグを受け入れるダックタイピングに適した方法
私はこのような機能を持っています:
bar
これで、Djangoレコードまたはレコードを指すスラッグのいずれかになります。実際のレコードが手元にあるときにこの関数を呼び出すことができるように、または文字列としてのみ使用可能なバー(データベースから取得)を持つより一般的な関数からこれを呼び出すことができるように、この柔軟性が必要です。
私は次のようなことができることに気づきました。
しかし、これはまったくエレガントではないようです。
可能であれば、isinstanceの使用を避けたいと思います。