2011-03-16 11 views
5

Uso ruby1.9.2p180 (2011-02-18 revisione 30909) i686-linux. Fiber#alive? restituisce un errore non definito:Fibra # viva? non definito

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

altri metodi, per esempio, Fiber#resume, Fiber.yield sembrano funzionare bene. Che c'è?

A proposito, qual è la differenza tra Fiber#resume e Fiber#transfer?

risposta

4

si è dimenticato di require 'fiber' prima:

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

Grazie. Non l'ho dimenticato, non lo sapevo. Non ha detto così nel doc. Dice che è necessario farlo per 'Fiber.current', ma non lo dice per' Fiber # alive? '. – sawa

+0

Probabilmente una supervisione della documentazione, quindi. In caso di dubbio, leggi il codice. :) –

+2

Quindi la richiesta di fibra è necessaria solo per alcuni, non per tutti i metodi di Fiber? –