2011-03-16 51 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