我们说我们有以下命令性片段:
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"]