小编Jac*_*cki的帖子

为什么不推断通用函数的参数类型?

在Scala 2.11.7中,具有以下案例类和其他apply方法:

case class FieldValidator[T](key: String, isValid: T => Boolean, 
                             errorMessage: Option[String] = None)

object FieldValidator {
  def apply[T](key: String, isValid: T => Boolean, 
               errorMessage: String): FieldValidator[T] = ???
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用时:

FieldValidator[String](key, v => !required || v.nonEmpty, "xxx")
Run Code Online (Sandbox Code Playgroud)

我收到一个"缺少参数类型"编译错误指向v.

当我明确指定类型时v,它编译得很好,我甚至可以跳过方法的泛型类型apply,即

FieldValidator(key, (v: String) => !required || v.nonEmpty, "xxx")
Run Code Online (Sandbox Code Playgroud)

vapply提供通用类型时,为什么不推断类型?

generics scala

7
推荐指数
1
解决办法
81
查看次数

标签 统计

generics ×1

scala ×1