当前位置:  开发笔记 > 编程语言 > 正文

通用Try [T]功能

如何解决《通用Try[T]功能》经验,为你挑选了1个好方法。

我想在通用Try[T]处理程序中重构一些常见的错误处理逻辑,类似于:

def handler[T](t: Try[T], successFunc: T => Unit) = {

  t.map {
    case Success(res) => { // type mismatch required T, found Any (in successFunc line)
    //case Success(res: T) => { // Type abstract type pattern T is unchecked since it is eliminated by erasure
      successFunc(res)
    }
    case Failure(e: CustomException) => {
      // custom actions
    }
    case Failure(e) => {
      // custom actions
    } 
  }
}

似乎T因为类型擦除而无法与类型匹配.但我不能传递一个AnysuccessFunc.

我该如何实现这个功能?



1> Ende Neu..:

尝试映射将函数应用于该尝试成功所持有的值,您所拥有的值不是a Success或a Failure,它是a T,您想要的是match:

def handler[T](t: Try[T], successFunc: T => Unit) = {
  t match {
    case Success(res) =>
      successFunc(res)
    case Failure(e: FileNotFoundException) =>
    case Failure(e) =>
  }
}

在您的情况下的用法map将是:

t.map(someT => successFunc(someT))

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有