0
我计划将来自tcp端口的传入数据视为来自“视图”的数据。我想设置一些RxRuby Observables,然后根据我从tcp端口获得的数据,选择适当的Observable并通过调用on_next
方法发布一些内容。如何将一个ruby实例变量设置为RxRuby Observable?
下面的代码工作,但似乎笨拙。传递给Rx::Observable.create
的块只是为传入它的observable设置一个实例变量。这不是一个巨大的锅炉板,但有些东西看起来不正确。我错过了什么吗?
require 'rx'
class GUIMessagePublisher
attr_accessor :handshake, :handshake_stream, :remote_button, :remote_button_stream
def initialize
self.handshake_stream = Rx::Observable.create { |o| self.handshake = o }
self.remote_button_stream = Rx::Observable.create { |o| self.remote_button = o }
end
def publish_handshake
handshake.on_next("hello")
end
def publish_remote_button
remote_button.on_next(nil)
end
end
publisher = GUIMessagePublisher.new
publisher.handshake_stream.subscribe { |m| puts "message = #{m}"}
publisher.remote_button_stream.subscribe { puts "remote button clicked" }
publisher.publish_handshake
publisher.publish_remote_button