【问题标题】:Return type from Try in scalascala 中 Try 的返回类型
【发布时间】:2020-07-19 13:20:09
【问题描述】:

我正在尝试计算记录数,如果我得到它们,则返回记录,否则只记录错误。

下面是sn-p:


    val records: Any = Try(count()) match {
                case Success(records) => records
                case Failure(exception) => logger.error(s"Exception occurred")
              }

count 方法的数据类型是 Int,但是因为包装在 Try 中,所以获取 type 为 any。 我该如何解决这个问题?

【问题讨论】:

  • 如果出现错误,records的值应该是多少?
  • 不只是日志错误
  • 这就是代码已经在做的事情。错误情况不返回任何内容(在 Scala 术语中为 Unit),因此表达式是 IntUnit,唯一匹配这两者的类型是 Any。如果你希望它是Int,你必须在错误情况和成功情况下返回Int

标签: scala scala-collections


【解决方案1】:

count 方法/字段返回的返回类型是什么。如果您只想忽略异常并打印它然后继续,您应该这样做:


  val records: List[Int] = Try(count()) match {
    case Success(records) => records
    case Failure(exception) =>
      log.error("Exception occurred", exception)
      List.empty
  }

  def count(): List[Int] = List(1, 2 ,3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2021-06-19
    • 2021-02-11
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多