2

鞋子包装了它自己的 Ruby 安装,对吧?

我不能使用 Ruby1.9 特性的 Fiber。而且,我想使用 Fiber 来创建生成器。

这是我的代码(因此您可以确保问题不在于我的代码):

class BrownianGenerator
  def initialize
    @x = 0
    @fiber = Fiber.new do
      loop do 
        @x = @x+rand; 
        Fiber.yield @x
      end
    end
  end
  def next; @fiber.resume end
  def rewind; @x=0 end
end

如果我制作了这样的鞋子应用程序:

Shoes.app do
  @b = BrownianGenerator.new
end

如果我拉起鞋子控制台,我会看到错误:

uninitialized constant #<class:0xblah>::BrownianGenerator::Fiber

因为,它说 Fiber 是一个未初始化的常量,要么我的代码有问题,要么这个 Ruby 版本不知道 Fiber 类 - 后者应该是这种情况。

我在确定 Ruby 的版本(我的 mac 安装为 1.8)时看到了这个问题,但我不知道如何更改版本。

4

3 回答 3

2

看看绿鞋

它的功能基于 _why 的原始实现,但它被打包为 Gem 并专门为 1.9 构建。

于 2012-09-30T21:03:15.443 回答
1

所以我跳进了freenode #shoes,发现鞋子的夜间版本使用的是Ruby1.9。我还没有时间尝试构建它,但这应该可以解决我的问题。

于 2009-09-17T17:04:15.153 回答
1

或者您可以使用 aman gupta 的“穷人的纤维”或尝试做 ::Fiber 或其他什么。GL!-r

于 2009-10-05T16:35:40.557 回答