我在scala中有更高级别的kinded类型的用户定义别名:
type FutureOfLastError = Future[LastError]
我也有这种类型的值:
val myFuture: FutureOfLastError = ...
要编写可读代码,我想定义(例如)像
这样的方法def mapToString = { ... }
将FutureOfLastError的实例映射到Future [String]并将其称为
myFuture mapToString
我该怎么做?它甚至可能吗?我已经在一个案例类中尝试了封装,我想到了所有类型的隐式转换。
我最喜欢的选择是类型别名上的伴随对象,但我无法让它工作,因为我无法从伴侣对象中调用trait Future的方法(如map等)。
答案 0 :(得分:1)
你不需要实际扩展类,你可以只使用一个隐式类(这只是“丰富我的库”模式的语法糖)。 像这样简单的东西应该这样做:
implicit class MyFutureOps( future: FutureOfLastError ) {
def mapToString = future.map(_.toString)
}