私の問題は非常に単純です。値がまだ関数になっていない場合は、値を関数に暗黙的に変換したいと考えています。暗黙的なパラメーターのインスタンス化を要求することで、タイプ セーフなパターンを使用する予定です (値が関数の場合、暗黙的な作成は失敗します)。ただし、値が関数ではないことをテストする方法がわかりません
以前の質問の 1 つで、ユーザーのベリリウムからタイプ セーフ パターンを学びました。参照 : 操作の繰り返しを許可しないタイプ セーフなメソッド チェーン
私が実装した暗黙的なものは機能していますが、うまくいきすぎています。not関数式を特定アプリデフォルト関数に自動変換したい
implicit def defaultExecutionUnitParameterNReturn(a: Any): Unit => MyDefaultReturn =
{u : Unit => a }.andThen(_ => defaultReturn())
ただし、ユーザーが「a」を関数として実装すると、アプリケーションは失敗します
だから私の最初のアイデアは次のようなものでした
implicit def defaultExecutionUnitParameterNReturn[A](a: A)(implicit e : A =!= Function) Unit => MyDefaultReturn =
{u : Unit => a }.andThen(_ => defaultReturn())
A と B が同じ型の場合、 implicit =!=[A,B] は失敗します。しかし「機能」は存在しない