2011-03-16 9 views
5

Uso ruby1.9.2p180 (2011-02-18 revisión 30909) i686-linux. Fiber#alive? devuelve un error indefinido:Fibra # vivo? no definido

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

Otros métodos, por ejemplo, Fiber#resume, Fiber.yield parecen estar funcionando bien. ¿Qué está mal?

Por cierto, ¿cuál es la diferencia entre Fiber#resume y Fiber#transfer?

Respuesta

4

que se olvidó de require 'fiber' primera:

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

Gracias. No lo olvidé, no lo sabía. No lo dijo en el documento. Su dice que necesitas hacer eso para 'Fiber.corrent', pero no lo dice para' Fiber # alive? '. – sawa

+0

Probablemente un descuido de la documentación, entonces. En caso de duda, lea el código. :) –

+2

Entonces, ¿se requiere fibra solo para algunos, no para todos los métodos de Fiber? –