斯卡拉。将任何val转换为功能样式中的其他值

时间:2014-12-19 15:12:57

标签: scala functional-programming

我认为在convertTo类中使用方法Any或其他名称会很有用,它会获取函数,将其转换为其他值。这种方法的签名可以是这样的(例子A):

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

使用此方法,开发人员可以使用convertor将一个对象简单地转换为其他对象。在现实世界中,它可用于使用此代码从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 个答案:

答案 0 :(得分:1)

  1. "功能"对很多人来说意味着很多东西。我认为这种风格可以(有时)使代码更具可读性,因为它使代码更紧密地与数据流相对应,但我不会将其描述为"更具功能性"。

    < / LI>
  2. scalaz |>怎么样?,例如

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

  3. 请注意,这适用于任何功能,它不一定是&#34; convertTo&#34;。