Scala(doobie):类型是不变的
我正在与Scala和IBM合作一个项目。我正在尝试实现一个事务处理程序特性,它可以被不同的任务/未来单子注入并使用(例如,用于测试) 但我得到了这个错误:Scala(doobie):类型是不变的,scala,doobie,Scala,Doobie,我正在与Scala和IBM合作一个项目。我正在尝试实现一个事务处理程序特性,它可以被不同的任务/未来单子注入并使用(例如,用于测试) 但我得到了这个错误: [error] .../src/main/scala/.../persistence/transactor/H2Transactor.scala:13: type mismatch; [error] found : M[doobie.h2.h2transactor.H2Transactor[M]] [error] required:
[error] .../src/main/scala/.../persistence/transactor/H2Transactor.scala:13: type mismatch;
[error] found : M[doobie.h2.h2transactor.H2Transactor[M]]
[error] required: M[doobie.imports.Transactor[M]]
[error] (which expands to) M[doobie.util.transactor.Transactor[M]]
[error] Note: doobie.h2.h2transactor.H2Transactor[M] <: doobie.imports.Transactor[M], but type M is invariant in type _.
[error] You may wish to define _ as +_ instead. (SLS 4.5)
[error]…/src/main/scala/../persistence/transact/h2transact.scala:13:类型不匹配;
找到[错误]:M[doobie.h2.h2事务处理程序。h2事务处理程序[M]]
[错误]必需:M[doobie.imports.transact[M]]
[错误](扩展为)M[doobie.util.Transact.Transactior[M]]
[错误]注意:doobie.h2.h2Transactior.h2Transactior[M]试试:
override val transactor = doobie.h2.imports.H2Transactor[M](...).widen
加宽
是一种操作,如果M
具有函子
实例,则该操作可用(在cats
和scalaz
中)。它允许您将M[A]
视为M[B]
如果A
是B
的子类,请尝试:
override val transactor = doobie.h2.imports.H2Transactor[M](...).widen
加宽
是一种操作,如果M
具有函子
实例,则该操作可用(在cats
和scalaz
中)。如果A
是B
的子类,它允许您将M[A]
视为M[B]
,谢谢。这有助于:override val transactior:M[imports.transactior[M]=Functor[M]。加宽[doobie.h2.imports.h2transactior[M],imports.transactior[M]](doobie.h2.imports.h2transactior[M](…)
谢谢。这有助于:override val transactior:M[imports.transactior[M]=Functor[M]。加宽[doobie.h2.imports.h2transactior[M],imports.transactior[M]](doobie.h2.imports.h2transactior[M](…)