1

这个问题需要了解位于此处的 javascript树懒库: https ://github.com/rfw/sloth.js

如果我有这个 javascript 生成器。

function fibonacci(){
  var fn1 = 1;
  var fn2 = 1;

  while (1){
    var current = fn2;
    fn2 = fn1;
    fn1 = fn1 + current;
    yield current;
  }
}

使用树懒库,我可以将其变成适合与树懒库一起使用的迭代器。

var iter = sloth.iterNextable(fibonacci());

上述 URL 中的树懒文档展示了使用 take() 函数从树懒友好的迭代器中获取 n 个元素的示例:

sloth.ify([1, 2, 3]).take(2).force();
[ 1, 2 ]

问题:如何从我的 fibonacci() 生成器到一个我可以调用 take() 的树懒对象?

4

1 回答 1

2

解决了。我发布问题的原因是这个

sloth.ify(iter).take(5)

回来

[object Object]  

所以我以为我做错了什么。该对象是需要评估的惰性对象。这就是 force() 的用武之地:

sloth.ify(iter).take(5).force()

返回

1,1,2,3,5
于 2013-02-25T17:56:57.630 回答