【发布时间】:2009-11-19 20:57:05
【问题描述】:
我正在尝试实现一个惰性序列(意味着仅在您调用 step 函数时才计算下一项),它应该具有的方法之一是“map”,它接收一个影响所有成员。
最优雅的方法是使用函数组合,并将新函数分配给函数变量,但由于函数不是 Java 中的第一类值,我不知道该怎么做。
我想过有一个只包含一个函数的类,作为一种“函数指针”包装器,但我不明白它如何用于组合。
编辑:问题与作业有关。
此外,它应该能够按照map(map(map(stepFunction()))) 的方式处理多个组合(在这种情况下,“map”是通过方法“map”给出的函数)。
【问题讨论】:
-
所以当你说你想做 map(map(map(stepFunction()))) 时,这是否意味着你有一个列表列表并且你想在每个列表上调用 stepFunction该层次结构中所有子列表的元素?我仍然不完全清楚您要完成的工作。
-
没有。基本上就是这样:在任何给定时间我只有三件事:阶跃函数、当前值和基值。如果从未应用 Seq.map(someFunctionToMapWith),则当前值 = 基值 = stepFunction(以前的基值)。但是,一旦将 map 应用于序列,每次我调用 seq.tail() 来更改当前值时,我首先更改基值并使用给定的函数进一步改变它: curr = mapFunc(stepFunc(base value )) (基值也会更新)。如果 map 被多次调用,它应该是 map(map(..map(stepFunc(base value))..))。