簡體   English   中英

如何定義匿名通用Scala函數?

[英]How can I define an anonymous generic Scala function?

假設我有這個:

val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
  a.getOrElse(defVal)
}

不要介意這個功能。 有沒有把它變成通用的,所以我可以有一個選項[T]?

總結一下這個答案:不,你不能使匿名函數變得通用,但你可以明確地將你的函數定義為擴展Function0,Function1,Function2等特征之一的類,並從這些特征中定義apply函數。 。 然后,您定義的類可以是通用的。 以下是原始文章的摘錄,可在此處獲得

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

我不認為匿名函數可以有類型參數。 有關詳情,請參閱此答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM