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