私がこれを持っているとしましょう:
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
関数が何をするか気にしないでください。Option[T]を持つことができるように、とにかくそれを汎用にすることはできますか?
私がこれを持っているとしましょう:
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
関数が何をするか気にしないでください。Option[T]を持つことができるように、とにかくそれを汎用にすることはできますか?
その答えから要約すると、いいえ、匿名関数をジェネリックにすることはできませんが、Function0、Function1、Function2などのいずれかを拡張するクラスとして関数を明示的に定義し、それらの特性から適用関数を定義できます. 次に、定義するクラスをジェネリックにすることができます。元の記事からの抜粋は次のとおりです。
scala> class myfunc[T] extends Function1[T,String] {
| def apply(x:T) = x.toString.substring(0,4)
| }
defined class myfunc
scala> val f5 = new myfunc[String]
f5: myfunc[String] = <function>
scala> f5("abcdefg")
res13: java.lang.String = abcd
scala> val f6 = new myfunc[Int]
f6: myfunc[Int] = <function>
scala> f6(1234567)
res14: java.lang.String = 1234
無名関数が型パラメーターを持つことはできないと思います。詳細については、この回答を参照してください。