我有这段代码:
package deliveries.NewPost
import play.api.data._
import play.api.data.Forms._
case class NewPostValidator(town: String, number: Int)
object NewPost extends Delivery{
def form[NewPostValidator](): Form[NewPostValidator] = Form(mapping(
"town" -> nonEmptyText,
"number" -> number)(NewPostValidator.apply)(NewPostValidator.unapply))
}
在编译时它给我一个奇怪的错误:
类型不匹配; [错误]发现: play.api.data.Mapping [deliveries.NewPost.NewPostValidator] [错误] 必需:play.api.data.Mapping [NewPostValidator]
基本上,同一个班级以完整路径显示且没有完整路径。 它能是什么?
我将澄清我想要实现的目标: 我希望每个类扩展trait都有方法“form”,返回Form,里面有一些验证器。为此,我创造了特质:
trait Delivery {
def form[T](): Form[T]
}
并尝试在我的课程中实现此方法。
答案 0 :(得分:1)
说Table2
就像说def form[NewPostValidator]
,只是使用不同的标识符。编译器没有在方法体中看到NewPostValidator作为" real" NewPostValidator,但作为您在def form[T]
中声明的伪造类型NewPostValidator。
解决方案:
使用[T]而不是您的方法对您的特征进行参数化,并让您的类使用特定类型扩展特征。
def form[NewPostValidator]