Mar*_*lic 3 monads scala side-effects
是否有更清晰的方式表达以下模式:
def getUser(id: String): Option[User] = ???
getUser("12345").map { user =>
someSideEffect(user)
user
}
Run Code Online (Sandbox Code Playgroud)
注意给定一个仿函数我们如何使用标识函数进行映射,还将副作用函数应用于盒装值.
Future.andThen 这样做:
将副作用函数应用于此未来的结果,并返回具有此未来结果的新未来.
Future.andThen对于任何仿函数,是否有类似但一般的情况?
没有任何开箱即用的东西.人们通常会添加如下内容:
object ImplicitUtils {
implicit class Utils[T](val t: T) extends AnyVal {
def tap(f: T => Unit): T = { f(t) ; t }
}
}
Run Code Online (Sandbox Code Playgroud)
所以,现在你可以写:
import ImplicitUtils._
val user = getUser("foo").tap(someSideEffect)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |