题
我试图实施一个懒惰的顺序(即下一个项目是只有计算在调用的步骤的功能),而其中一个方法应该是"地图",其接收的功能,影响到所有成员。最优雅的方式来做到这一点是使用功能组成,并分配新的职能,该功能可变的,但是,由于职能不是第一流的价值在Java我不知道如何做到这一点。
我想有一个类中只包含一个功能,作为排序的"功能指"包装,但是我看不出如何可被用于组成。
编辑:问题是家庭作业有关。此外,它应该能够处理多个组沿线的地图(地图(map(stepFunction())))("地图",在这种情况下正在的功能通过方法的"地图").
解决方案
欢迎到Java及其痛苦。
interface Function<T> {
public T eval(T argument);
}
class Lazy<T> {
private Iterator<T> source;
private Function<T> filter;
Lazy(final Iterator<t> source, final Function<T> filter) {
this.source = source;
this.filter = filter;
}
public T step() {
return filter.eval(source.next());
}
}
其他提示
谷歌集合 有的 Function
类型, Functions.compose(Function, Function)
方法, Iterables.transform(Iterable, Function)
方法,以及更多。
没有帮助你如果这是家庭作业(我真希望每个人都会透露当他们的问题是家庭作业有关的)。
在Java中,你老是这样一类的协议。见java.lang.Thread
,为典型的例子运行功能。有没有“函数指针”或“函数变量”在Java中。
FWIW中, “函数指针” 等效于Java是一种接口使用单个方法。你实现具有某些类,它提供的方法的一个实施的界面,然后存储到该类对象的引用。
更改参考另一类对象,后者采用不同实现的方法中,相当于改变函数指针指向一个不同的功能。
public static <T> void apply(final List<T> list, final Function<T> func)
{
for(final T val : list)
{
func.perform(val);
}
}
interface Function<T>
{
void apply(T value);
}
class DisplayFunction<T>
implements Function<T>
{
public void perform(T value)
{
System.out.println(value);
}
}
呼叫应用(列表,新DisplayFunction());
不隶属于 StackOverflow