扩展用户定义的更高级别的kinded类型

时间:2013-03-04 09:49:55

标签: scala implicit-conversion higher-kinded-types companion-object

我在scala中有更高级别的kinded类型的用户定义别名:

type FutureOfLastError = Future[LastError]

我也有这种类型的值:

val myFuture: FutureOfLastError = ...

要编写可读代码,我想定义(例如)像

这样的方法
def mapToString = { ... }

将FutureOfLastError的实例映射到Future [String]并将其称为

myFuture mapToString

我该怎么做?它甚至可能吗?我已经在一个案例类中尝试了封装,我想到了所有类型的隐式转换。

我最喜欢的选择是类型别名上的伴随对象,但我无法让它工作,因为我无法从伴侣对象中调用trait Future的方法(如map等)。

1 个答案:

答案 0 :(得分:1)

你不需要实际扩展类,你可以只使用一个隐式类(这只是“丰富我的库”模式的语法糖)。 像这样简单的东西应该这样做:

implicit class MyFutureOps( future: FutureOfLastError ) {
  def mapToString = future.map(_.toString)
}