我正在使用RS232 pinpad,並且想要爲它創建一個繼承自serialport gem的類,以便我可以使用serialport gem公開的方法,例如each_byte,同時抽象出寫入到pinpad的LCD時的一些細節。由於類方法,Ruby對象的初始化方法永遠不會觸發
我遇到的問題是serialport gem定義了一個名爲new的類方法,它似乎阻止了我的initialize
方法的觸發。
class SerialPort
def SerialPort::new(port, *params)
#some code here
end
end
require 'serialport'
class Pinpad < SerialPort
attr_reader :test
def initialize
@test = "success"
end
end
kp = Keypad.new()
puts kp.x #should be "success", will be nil
我試圖定義我自己的類方法命名爲新def Pinpad::new
這至少讓我重寫SerialPort::new
方法,但它仍然不會使代碼在我initialize
方法開火。
我是Ruby的新手,所以解決方案可能是微不足道的,但我真的很感謝這個幫助。
呼叫從''new' initialize'? –
你確定繼承是正確的方法嗎? Pinpad是不是一個*有串行端口而不是*是串行端口的設備? –
@mu引腳板是連接到串行端口的設備。我使用繼承的原因是,讀取和寫入它可以像寫入標準串行端口一樣完成,但是我想抽象寫入方法,以便我可以調用'pinpad.write_line(0, 「some text」)''而不是'serialport.write(「\ eS0some text .......」)'但是如果你知道更好的設計模式,我願意接受建議 – mcourtney