Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala(doobie):类型是不变的_Scala_Doobie - Fatal编程技术网

Scala(doobie):类型是不变的

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:

我正在与Scala和IBM合作一个项目。我正在尝试实现一个事务处理程序特性,它可以被不同的任务/未来单子注入并使用(例如,用于测试)

但我得到了这个错误:

[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](…)