関数の上でmatch-case
を実行することはできますか? さまざまな種類の関数に対して動作を定義したいと考えています。スカラ:汎用関数より大文字小文字を区別する
f: T => Int
f: T => String
f: T => Lis[Int]
f: T => Boolean
f: T => Double
- ...
及びこれらのそれぞれについて、O:私は次の可能性を持っていると言います私は機能を持っています。例えばInt
出力用: 'DEF doThisForBoolean: def doThisForInt(f: T => Int) = { ... }
このBoolean
出力用val f = (input: T) => true
:(F:T =>ブール値)= {...}
そこで現在、関数定義が与えられると仮定する。対応するケースをf: T => Boolean
にする必要があります。
これらの機能はすべて出力タイプが異なります。あるいは、f
とすれば、この関数の出力タイプを得ることができますか?
あなたのユースケースは何ですか?巨大なマッチ/ケースがコードの匂いであるため、型クラスがこれに適しているように思えます。 –
これらのケースのそれぞれのタイプを定義するのが好きですか? 'f:T => Int'のように、' f:T => Double'などのように? – Daniel
マッチを使用したいメソッドのシグネチャは何ですか?あなたが一般的なものにしたいので、 'T => Int'を受け入れることはできませんよね?何かのように: 'def doSomething [T、R](f:T => R):??? = ??? '?何を返すべきですか? –