Я пишу класс Ruby, который распространяется на TCPSocket
. Предположим, это выглядит примерно так:Наложение на гнездо Ruby
class FooSocket < TCPSocket
def hello
puts 'hello'
end
end
У меня есть TCPServer
прослушивания входящих соединений
server = TCPServer.new 1234
socket = server.accept
Когда мой сервер, наконец, принимает соединение, он будет возвращать TCPSocket
. Тем не менее, я хочу FooSocket
, чтобы я мог позвонить socket.hello
.
Как я могу сменить TCPSocket
на номер FooSocket
?
Я мог бы утащить методы и атрибуты, которые я хочу прямо на класс TCPSocket
, но я использую его в другом месте, и поэтому я не хочу этого делать.
Возможно, самым простым решением является написать класс, который инкапсулирует TCPSocket
, и просто передать сокет, возвращенный accept
в качестве параметра. Тем не менее, мне интересно знать, как это сделать через наследование - я пытался склонить голову, но не могу понять.
Заранее благодарен.