假设我有这个:
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
不介意该功能的作用。有没有把它变成通用的,所以我可以有一个Option [T]?
答案 0 :(得分:8)
总结答案:不,你不能使匿名函数通用,但你可以明确地将你的函数定义为扩展Function0,Function1,Function2等之一的类。 。特征和定义这些特征的应用函数。然后,您定义的类可以是通用的。以下是原始文章的摘录,可用here:
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
答案 1 :(得分:7)
我不认为匿名函数可以有类型参数。有关详细信息,请参阅this answer。