锡兰的无限可迭代发电机

时间:2013-11-25 03:41:11

标签: ceylon

在Ceylon中有一种简单的方法可以创建一个无限的迭代,它通过调用相同的no-args函数来生成每个元素吗?换句话说,语言模块是否提供了与Java 8的Stream.generate(Supplier<T>)相同的作用?

2 个答案:

答案 0 :(得分:5)

以下是我提出的建议:

{Value+} generator<Value>(Value() generate) => {generate()}.cycled;

这是有效的,因为{generate()}是懒惰的。

答案 1 :(得分:1)

目前实际上并不存在,我认为“Ceylonish”的方式是这样的:

class Generator<T>(T func()) satisfies Iterable<T> {
    object iter satisfies Iterator<T> {
        next() => func();
    }
    iterator() => iter;
}

您也可以在the language module

上打开请求