問題タブ [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.

0 投票する
3 に答える
4034 参照

c# - IEnumerableで動的Selectを作成するにはどうすればよいですか?実行時に?

オブジェクトがあるIEnumerable<T>場合T、実行時にプロパティ名の1つの名前を文字列として知っている場合、そのオブジェクトから特定のプロパティを選択するにはどうすればよいですか?

例えば:

本質的に、私は明らかに実行しているだけですが、最初に作成されるタイミングを制御できない場合は、実行時にexternalIEnumerable.Select(x=> x.Foo);これを実行する必要があります。Select

-

回答: AlanTの回答に基づいて、私が実際に行ったことは次のとおりです。

呼び出すCompileとIQueryableが列挙され、データベースが不必要にヒットしたため、式として保持しました。それで、それを使うために、私はただ次のことをします:

0 投票する
3 に答える
2718 参照

c# - IEnumerable で動的マルチプロパティ Select を作成するにはどうすればよいですか実行時に?

昨日、非常によく似た質問をしましたが、受け入れた回答がすべての問題を解決するとは限らないことに今日まで気づきませんでした。次のコードがあります。

次のように使用されます。

これにより、 から主キーを引き出すことができますIQueryable<TUnknown>。問題は、このコードが 1 つの主キーでしか機能せず、複数の PK のサポートを追加する必要があることです。

SelectExpressionでは、上記のメソッドを適応させてIEnumerable<string>(主キー プロパティ名のリスト) を取得し、それらのキーを選択する式をメソッドに返させる方法はありますか?

つまり、次のようになります。

私の選択は、(実行時に)次のことを行う必要があります。

0 投票する
3 に答える
1622 参照

delphi - Delphi 2007でダックタイピングしますか?

質問:

Delphi 2007でダックタイピングを行う方法はありますか(つまり、ジェネリックスと高度なRtti機能なしで)?


Delphi 2010以降のダックタイピングリソース:

最終編集:

私は上記のリソースをさらに掘り下げ、ここに投稿されたすべての回答を調査しました。

私は自分の要件を洗練し、この質問へのフォローアップ投稿をすることになります。

0 投票する
1 に答える
336 参照

delphi - Delphi 2007 でのダックタイピング (続き)?

これはこの投稿のフォローアップです。

ここに投稿された受け入れられた回答に基づいて、要件を絞り込みました。

私の *.dpr ファイル:

uBirds.pas リスト:

uDuckTyping.pas のコーディングの試み:

私の質問:

使いたい

  • ObjAuto.GetMethodInfoを使用して、ラップされた Quack メソッドの存在を確認します。
  • ObjAuto.ObjectInvokeを使用して、ラップされた Quack メソッドを呼び出します。

コードを完成させるにはどうすればよいですか?

0 投票する
1 に答える
587 参照

python - __getitem__() のパラメータとしてタプルを使用するには?

dict をラップするカスタム クラスを作成しています。そのため、 getitemを実装したいと考えています。また、この dict ではタプルをキーとして使用します。しかし、タプルを getitem に渡そうとすると、Python が KeyError をスローします。タプルをgetitemに渡すと、タプルが int にキャストされているようです:

コード:

出力:

Board は、Python が満足するためにマッピング タイプから継承する必要がありますか? また、Python が最初にこのキャストを実行しようとするのはなぜですか?

0 投票する
1 に答える
184 参照

scala - タイプをscalaのトレイトに拡張するにはどうすればよいですか?

ダックタイピングに使用するタイプがあります。

タイプをインターフェースするように強制されるトレイトを書きたいのですが、これは機能しません:

一方、タイプtの代わりにトレイトt1を書くと、ダックタイピング機能が失われます。

では、ダックタイピングとインターフェースの両方をどのように使用できますか?

0 投票する
5 に答える
17743 参照

ruby - Ruby プログラマーはどのように型チェックを行うのですか?

ruby には型がないので、Ruby プログラマーは関数が正しい引数を受け取るようにするにはどうすればよいでしょうか? 現在、if object.kind_of/instance_ofステートメントを繰り返して実行時エラーをチェックして発生させていますが、これは醜いです。これを行うためのより良い方法があるはずです。

0 投票する
3 に答える
3048 参照

python - Python でダックタイピングを行う場合、isinstance をテストする必要がありますか?

equals テストが必要な Python クラスがあります。Pythonはダックタイピングを使用する必要がありますが、(より良い/より正確に) isinstance テストをeq関数に含めるか除外しますか? 例えば:

0 投票する
3 に答える
1882 参照

c - プレーン C でのダックタイピングの適用

私のオープンソースのプレーンな C コードでは、次の単純な構造を使用して、文字列バッファーからデータを読み取り、解析します。

この単純な APIを使用してバッファにアクセスします。

注:現在の実装を壊すことなくltsLS_unreadに置き換えることができます。return (ltsLS_good(ls)) ? SIZE_MAX : 0

このコードは、一部のデータを文字列バッファからカスタム形式でロードするために使用されます。(こちらの方がわかりやすいかもしれません。)


ここで、文字列バッファーからではなく、FILEポインターからデータをロードする必要があります。

実装をコピーして貼り付けるのは嫌いで、代わりに既存のコードを再利用したいと考えています。(もちろん、リファクタリング/適応は問題ありません。)

これは C++ の教科書的なものですが、実行時のオーバーヘッドを発生させずに単純な C でそれを行うにはどうすればよいでしょうか?


APIを使用する関数の例を次に示します。この関数はlts_LoadStateコピー アンド ペーストできません (もちろん、文字列バッファと の両方をサポートするように変更することはできますFILE *)。

0 投票する
3 に答える
355 参照

django - Django:入力用のレコードまたはレコードのスラッグを受け入れるダックタイピングに適した方法

私はこのような機能を持っています:

barこれで、Djangoレコードまたはレコードを指すスラッグのいずれかになります。実際のレコードが手元にあるときにこの関数を呼び出すことができるように、または文字列としてのみ使用可能なバー(データベースから取得)を持つより一般的な関数からこれを呼び出すことができるように、この柔軟性が必要です。

私は次のようなことができることに気づきました。

しかし、これはまったくエレガントではないようです。

可能であれば、isinstanceの使用を避けたいと思います。