問題タブ [generic-function]

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 投票する
1 に答える
96 参照

vb.net - 再帰関数でパラメーターとして渡されたジェネリック関数を呼び出す

AddressOf私の望みは、特定の関数を 1 つの入力パラメーターを使用して名前で実行することFunction Foo(x as Integer) As Integerです。再帰関数に必要な 2 つの入力は、関数名と、何らかの型 t (Integer、Double、List(Of Integer) など)_name As Stringのオブジェクトです。_list As t目標は、関数名を使用して要素または要素のリストを処理することです。これは、特定の関数でリストを処理する必要が何度もあり、各場所でリスト処理コードを複製したくないためです。完全にクラッシュしなかったこのタイプの関数(以下)で最善を尽くそうとした方法は、このエラーを引き起こしました:

警告: List.Test 操作に失敗しました。次の引数でパブリック 'ProcessList' を呼び出すことができないため、オーバーロードの解決に失敗しました: 'Public Shared Function ProcessList(Of t)(_func As Func(Of Object,t), _list As System.Object) As IEnumerable(Of t)':型引数の推論は、引数一致パラメーター '_func' で失敗します。

参考までに、必要なことを効果的に実行する Python コードのスニペットを見つけましたが、この方向 (Python から VB.net) への変換には少し慣れていません。 VB.net。Python スニペットは次のとおりです。

この関数を呼び出す方法、または私のアプローチに欠陥がある場合にこの関数を作り直す方法についての助けをいただければ幸いです。

アップデート:

メソッドが機能しているという@djvの情報に基づいて、関数の呼び出し方法と他のいくつかのことを再検討しました。まず、これらの関数とのインターフェイス方法の性質上、上記の関数を次のように公開する必要があります。

また、次のエラー メッセージが表示されるようになりました。

警告: List.Test 操作に失敗しました。タイプ 'System.Int32' のオブジェクトをタイプ 'System.Collections.Generic.IList`1[System.Int32]' にキャストできません。

この時点での問題は、私が思っていた関数自体ではなく、おそらく ProcessList 関数を呼び出すメソッドにあります。ProcessList を単独で呼び出すことに満足していない GUI とやり取りしているため、この中間の「ヘルパー」関数が必要ですが、これは明らかに正しく使用されていません。