【问题标题】:How can I define an anonymous generic Scala function?如何定义匿名通用 Scala 函数?
【发布时间】:2010-03-31 16:09:30
【问题描述】:

假设我有这个:

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

不要介意函数的作用。有没有让它通用,所以我可以有一个 Option[T]?

【问题讨论】:

    标签: generics scala anonymous-function


    【解决方案1】:

    从该答案中总结:不,您不能将 匿名 函数设为通用,但您可以将函数显式定义为扩展 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
    

    【讨论】:

    • 也可以更惯用地写成extends (T =&gt; String) {
    【解决方案2】:

    我不认为匿名函数可以有类型参数。详情请见this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多