我试图实施一个懒惰的顺序(即下一个项目是只有计算在调用的步骤的功能),而其中一个方法应该是"地图",其接收的功能,影响到所有成员。最优雅的方式来做到这一点是使用功能组成,并分配新的职能,该功能可变的,但是,由于职能不是第一流的价值在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());

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top