現在、スレッドでコールバックを使用して静的クラスのクラス変数を操作するプログラムを使用しています。オブジェクトを操作するメソッドが呼び出されると、スレッドは終了します。誰かが見て、私が間違っていること、または同じことをより良い方法で達成する方法を教えていただければ、非常にありがたいです. 以下は、問題を再現する簡単なプログラムです。
phone.rb で:
class Phone
@@ringer = "RingVibrateRingVibrateRing"
def self.get_ringer
return @@ringer
end
def set_ringer(new_ring)
@@ringer = new_ring
end
def self.calling_you(reached)
puts "Calling you. "
t = Thread.new {
sleep(3)
reached.call
Thread.exit
}
sleep(10)
puts "Thanks for calling me back!"
end
end
CallTree.rb 内
require 'thread'
require 'C:\Users\mabauer\Desktop\phone.rb'
def calling_you_back
ring_sound = Phone.get_ringer
puts "#{ring_sound}"
# The following line is where issues occur, when commented it works fine
Phone.set_ringer("RingingRingingRinging")
ring_sound = Phone.get_ringer
puts "#{ring_sound}"
puts "I called you back."
end
begin
Phone.calling_you(method(:calling_you_back))
end