14
比方說,我有這樣的:我如何定義一個匿名通用斯卡拉功能?
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
不介意的功能是什麼。反正使其通用的,這樣我就可以有一個選項[T]?
比方說,我有這樣的:我如何定義一個匿名通用斯卡拉功能?
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
不介意的功能是什麼。反正使其通用的,這樣我就可以有一個選項[T]?
我不認爲匿名函數可以有類型參數。見this answer瞭解詳情。
從這個答案總結:不,你不能使匿名函數泛型,但你可以顯式定義你的函數作爲一個類,擴展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
也可以編寫它更地道爲'延伸(T =>字符串){' – 2013-06-28 20:27:14