2011-03-16 30 views
5

Tôi sử dụng ruby1.9.2p180 (2011-02-18 revision 30909) i686-linux. Fiber#alive? trả về một lỗi không xác định:Sợi # còn sống? không được xác định

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

Các phương pháp khác, ví dụ, Fiber#resume, Fiber.yield dường như làm việc tốt. Chuyện gì thế?

Nhân tiện, sự khác biệt giữa Fiber#resumeFiber#transfer là gì?

Trả lời

4

Bạn quên require 'fiber' đầu tiên:

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

Cảm ơn. Tôi không quên, tôi không biết. Nó không nói như vậy trong tài liệu. Nó nói rằng bạn cần phải làm điều đó cho 'Fiber.current', nhưng nó không nói như vậy cho' Fiber # còn sống? '. – sawa

+0

Có thể là tài liệu giám sát, sau đó. Khi nghi ngờ, hãy đọc mã. :) –

+2

Vì vậy, yêu cầu chất xơ chỉ yêu cầu đối với một số, không phải tất cả các phương pháp của Fiber? –

Các vấn đề liên quan