我正在使用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