2
比方說,我定義的特質某種類型的,應該實施一些類型的類(如仿函數):爲什麼implicits未在這種類型的依賴路徑的場景觸發
import cats.Functor
import cats.syntax.functor.toFunctorOps
trait Library {
type T[+A]
implicit val isFunctor: Functor[T]
}
現在,我想使用這個庫。以下工作正常:
trait LibraryUser {
val l: Library
import l._
def use: T[Boolean] = {
val t: T[Int] = ???
t.map(_ => true)
}
}
但在法的參數用它來代替時,隱含的進口不工作(出注釋行不編譯),你必須寫隱含的你自己改爲:
object LibraryUser1 {
def use(l: Library): l.T[Boolean] = {
import l._
val t: T[Int] = ???
//t.map(_ => true)
toFunctorOps(t)(isFunctor).map(_ => true)
}
}
爲什麼這是這種情況/可以做些什麼反對它。