用于基于先前值生成值的功能构造

时间:2017-04-13 11:08:20

标签: java groovy functional-programming generator

我们说我们有以下命令性片段:

List list = new ArrayList()
var x = doSomething(arg1, ..., argN)
list.add(x)
do {
  x = doSomething(arg1, x.prop1, ..., x.propM, argN)
  list.add(x)
while (x.propK == <something>)

类似如何使用foldLeft对数组中的值求和,或者flatMap如何从现有数据中生成新的(子)集合,是否存在基于某些生成函数生成项集合的函数结构,可能的初始值和终止函数,签名类似于以下内容:

def generate<U, T>(initialValue)(generator Function<U, T>, terminator Function<T, Boolean>)

编辑,一个例子:

generate({ "12345" }, { String s -> s.substring(1) }, { String s -> s.isEmpty })

应该产生:

["12345", "2345", "345", "45", "5"]

0 个答案:

没有答案