如何转换U => Seq [T]到流[U => T]

时间:2016-11-14 18:36:10

标签: scala scala-streams

我正试图解决这个问题。我想在Scala中实现这个功能

def toSeq[U,T](f: U=>Seq[T]): Stream[U=>T] = ???

我想解决方案应该使用Stream,但我不知道如何解决这个问题。

修改

我将尝试描述导致我遇到此问题的用例。我正在创建一个DSL来表达来自不同数据源的数据提取。 DSL允许定义这样的提取(U是源类型,T是提取类型)

type Mapping[-U, T] = U => T    
trait Source[T , U]
case class SingleValueSource[T  U](mappings: Seq[Mapping[U, T]]) extends Source[T, U]
case class OptionalValueSource[T , U](mappings: Seq[Mapping[U, Option[T]]]) extends Source[T, U]
case class SeqValueSource[T , U](mapping: Mapping[U, Seq[T]]) extends Source[T, U]

我希望能够将所有这些映射组合起来构建新的Source,例如

def addMapping(source: Source[U,T], mapping: Mapping[U, T]): Source[U,T]
def addMapping(source: Source[U,T], mapping: Mapping[U, Option[T]]): Source[U,T]
def addMapping(source: Source[U,T], mapping: Mapping[U, Seq[T]]): Source[U,T]

当我尝试实施

时,我问的功能出现了
def addMapping(source: SeqValueSource[U,T], mapping: Mapping[U, Option[T]]): Source[U,T]

但也许有更好的方式

0 个答案:

没有答案