2011-03-16 45 views
5

我使用ruby1.9.2p180(2011-02-18修订版30909)i686-linux。 Fiber#alive?返回一个未定义的错误:光纤#活着?未定义

fiber = Fiber.new{puts 'hello'} 
fiber.alive? 
=> undefined error 

其他方法,例如,Fiber#resumeFiber.yield似乎是工作的罚款。哪里不对?

顺便提一下,Fiber#resumeFiber#transfer有什么区别?

回答

4

你忘了require 'fiber'第一:

f = Fiber.new { puts 'hello' } 
    => #<Fiber:0x896109c> 

f.alive? 
    # NoMethodError: undefined method `alive?' for #<Fiber:0x896109c> 
    #  from (irb):2 
    #  from /home/johnf/.rvm/rubies/ruby-1.9.2-rc1/bin/irb:17:in `<main>' 

require 'fiber' 
    => true 

f.alive? 
    => true 
+2

谢谢。我没有忘记它,我不知道它。它在文档中没有这么说。它说你需要为'Fiber.current'做到这一点,但是对于'Fibre#alive?'不这么说。 – sawa 2011-03-16 16:55:38

+0

可能是一个文档监督,然后。如有疑问,请阅读代码。 :) – 2011-03-16 16:57:21

+2

所以需要光纤只需要一些,而不是所有的光纤的方法? – 2011-03-16 22:40:56