相关疑难解决方法(0)

如何处理`Reader` monad和`Try`?

我正在阅读这篇关于使用Reader monad进行scala依赖注入的精彩文章.

原始示例运行良好,但我对返回类型做了一点改动UserRepository.get/find.是的User,但我把它改成了Try[User].

然后代码将不会编译,我已经多次尝试,但仍然没有幸运.

import scala.util.Try
import scalaz.Reader

case class User(email: String, supervisorId: Int, firstName: String, lastName: String)

trait UserRepository {
  def get(id: Int): Try[User]

  def find(username: String): Try[User]
}

trait Users {

  def getUser(id: Int) = Reader((userRepository: UserRepository) =>
    userRepository.get(id)
  )

  def findUser(username: String) = Reader((userRepository: UserRepository) =>
    userRepository.find(username)
  )
}

object UserInfo extends Users {

  def userEmail(id: Int) = {
    getUser(id) map (ut => ut.map(_.email))
  }

  def userInfo(username: String) = …
Run Code Online (Sandbox Code Playgroud)

monads dependency-injection scala scalaz

11
推荐指数
1
解决办法
1056
查看次数

标签 统计

dependency-injection ×1

monads ×1

scala ×1

scalaz ×1