Scala 扩展用户定义的更高级类型
我有一个用户定义的别名,用于scala中更高级的类型:Scala 扩展用户定义的更高级类型,scala,implicit-conversion,higher-kinded-types,companion-object,Scala,Implicit Conversion,Higher Kinded Types,Companion Object,我有一个用户定义的别名,用于scala中更高级的类型: type FutureOfLastError = Future[LastError] 我还有一个这样的值: val myFuture: FutureOfLastError = ... 为了编写可读代码,我想定义(例如)一个方法,如 def mapToString = { ... } 它将FutureOfLastError的一个实例映射到一个Future[String],并像 myFuture mapToString 我该怎么做?有可
type FutureOfLastError = Future[LastError]
我还有一个这样的值:
val myFuture: FutureOfLastError = ...
为了编写可读代码,我想定义(例如)一个方法,如
def mapToString = { ... }
它将FutureOfLastError的一个实例映射到一个Future[String],并像
myFuture mapToString
我该怎么做?有可能吗?我已经在一个case类中尝试过封装,我想到了各种隐式转换
我最喜欢的选择是类型别名上的伴生对象,但我无法让它工作,因为我无法从伴生对象调用trait Future的方法(如map等)。您不需要实际扩展该类,只需使用隐式类(这只是“丰富我的库”模式的语法糖)。 像这样简单的事情应该可以做到:
implicit class MyFutureOps( future: FutureOfLastError ) {
def mapToString = future.map(_.toString)
}
您不需要实际扩展该类,只需使用隐式类(这只是“丰富我的库”模式的语法糖)。 像这样简单的事情应该可以做到:
implicit class MyFutureOps( future: FutureOfLastError ) {
def mapToString = future.map(_.toString)
}
伟大的非常感谢您很快的答复。它工作得很好。我只是不知道隐式类到目前为止(我只是一个scala初学者,你可能已经猜到了…;-)太好了。非常感谢您很快的答复。它工作得很好。到目前为止,我还不知道隐式类(正如你可能猜到的,我只是一个scala初学者…;-)