1

このメソッドを抽象クラスで定義しています。

abstract class RichTable[T](name: String) extends Table[T](name) {
    def insert(model : T) = Database { implicit db: Session =>
    *.insert(model.copy(id = getNextId(classOf[T].getSimpleName())))
  }
  //other methods which are fine
}

そしてそれ(model.copy)は言います:

could not find implicit value for evidence parameter of type scala.slick.lifted.TypeMapper[T]

この問題を解決する方法がわかりません。私はscalaの初心者で、これに固執しています。誰でも私に手がかりを与えることができますか?

4

1 に答える 1

0

エビデンス パラメータは、 のように、関数のカリー化された暗黙的なパラメータですmodel.copy(id)(implicit typeMapper)。宣言する必要がありますimplicit val typeMapper: scala.slick.lifted.TypeMapper[T] = something。のソースで F3 を検索しmodel.copyます。

編集

まったく正しくありません。変更するとうまくいくdef insert(model: T) to def insert[T: ClassManifest](model: T)はずです。なんで?

関数内では を使用classOf[T]しますが、 T の実際の型は実行時に消去され、どのクラスgetSimpleName()を呼び出す必要があるかが明確ではありません。したがって、ClassManifestバインドされた型パラメーターを宣言する必要があり、適切な型の暗黙的なパラメーターが自動的に追加される必要があります[T](model: T)(implicit evidence$1: ClassManifest[T])

于 2012-12-10T22:42:51.287 に答える