unix'Tee'喜欢scala中副作用+ map的行为

时间:2015-03-19 09:15:49

标签: scala

导致副作用返回对象的Scala-idiomatic方法是什么?目前我有

def fun: Future[Option[A]] = {
    val result = {// code returning a Future[Option[A]]}
    result.map{_.foreach(doSomething())}
    result
}

但我确信有更好的方法可以做到。

2 个答案:

答案 0 :(得分:1)

查看Future.onComplete(ScalaDoc

def fun: Future Future[Option[A]] = {
    val result = {// code returning a Future[Option[A]]}
    result.onComplete(r => doSomething())
    result
}

答案 1 :(得分:0)

我认为习惯性的Scala方式是使用andThen,这是专门用于引起副作用。

def fun: Future[Option[A]] = {
    {// code returning a Future[Option[A]]}
    .andThen{_.foreach(doSomething())}       
}