2014-12-19 15 views
0

我认为在Any类中使用方法convertTo或其他名称可能会有用,该类将获得将其转换为其他val的函数。该方法的签名可以是这样的(实施例A):斯卡拉。将任意val转换为函数样式中的其他值

def convertTo[T](convertor: this.type => T) : T = convertor(this) 

采用这种方法开发者可以一个对象简单地转换成其它使用转换器。在现实生活中的世界它可以用于转换从List[Future[T]]Future[List[T]]与此代码(例如B):

/* long code, which constructs List[Future[T]] */ convertTo { list => Future.sequence(list) } 

本(实施例C)代替:

Future.sequence(/* long code, which constructs List[Future[T]] */) 

我认为在该代码示例B更具功能风格,即示例C中的代码。所以,我有两个问题:

  1. 它适合功能风格的编码范例吗?
  2. 是否有任何已经存在的Scala库,它提供了这样的东西?

回答

1
  1. “功能” 是指很多事情很多人。我认为这种风格可以(有时)使代码更具可读性,因为它使代码更接近数据流,但我不会将其描述为“更多功能”。

  2. scalaz |>?例如,

    [code that constructs List[Future[T]]]] |> Future.sequence

请注意,这适用于任何功能,它不一定是 “的ConvertTo”。

+0

你可以给一个链接到scalaz的文档''''? –

+0

scalaz记录不完整;有scaladocs,http://docs.typelevel.org/api/scalaz/nightly/index.html#scalaz.syntax.IdOps。 ('IdOps'由scalaz方法组成,如果你有scalaz进口的话,它们可以套装到任何物体上) – lmm

+0

是的,这真的是我一直在寻找的东西。谢谢! –