Не удалось найти неявное значение для параметра F: cats.Applicative [F] - PullRequest
0 голосов
/ 06 июня 2018

В настоящее время я прохожу учебник по кошкам.

Учебник дает мне хранилище кошачьих хлебов (использует Slick), которое я не должен редактировать, а затем просит меня реализовать различные методы.К сожалению, я застрял на чем-то, что кажется довольно очевидным.

Мне дан метод

  def findByName(name: String)(implicit ec: ExecutionContext): DBIO[Option[Breed]] = {
    query.filter(_.name === name).result.headOption
  }

в breedsRepository, и я должен реализовать следующий метод:

def findBreed(name: Either[Int, String]): DBIO[Either[Int, Breed]] = ???

Я думал о:

def findBreed(name: Either[Int, String]): DBIO[Either[Int, Breed]] =
    name.traverse(n => breedsRepository.findByName(n).map(_.get))

Но я получаю ошибку could not find implicit value for parameter F: cats.Applicative[F] Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 06 июня 2018

Компилируется следующий код:

import slick.jdbc.PostgresProfile.api._
import scala.concurrent.ExecutionContext
import scala.concurrent.ExecutionContext.Implicits.global
import cats.implicits._
import com.rms.miu.slickcats.DBIOInstances._

object breedsRepository {   
  case class Breed(name: String, price: Double)

  class BreedTable(tag: Tag) extends Table[Breed](tag, "BREEDS") {
    def name = column[String]("NAME", O.PrimaryKey)
    def price = column[Double]("PRICE")
    def * = (name, price) <> (Breed.tupled, Breed.unapply)
  }
  val query = TableQuery[BreedTable]

  def findByName(name: String)(implicit ec: ExecutionContext): DBIO[Option[Breed]] = {
    query.filter(_.name === name).result.headOption
  }

  def findBreed(name: Either[Int, String]): DBIO[Either[Int, Breed]] =
    name.traverse[DBIO, Int, Breed](n => findByName(n).map(_.get))
}

build.sbt

name := "slickdemo"

version := "0.1"

scalaVersion := "2.12.6"

scalacOptions += "-Ypartial-unification"

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick" % "3.2.3",
  "org.slf4j" % "slf4j-nop" % "1.6.4",
  "com.typesafe.slick" %% "slick-hikaricp" % "3.2.3"
)

libraryDependencies += "org.typelevel" %% "cats-core" % "1.0.1"

libraryDependencies += "com.rms.miu" %% "slick-cats" % "0.7.1.1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...