Я пишу класс Ruby, который расширяет TCPSocket
. Предположим, это выглядит примерно так:
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
, в качестве параметра. Тем не менее, мне интересно знать, как сделать это с помощью наследования - я пытался сосредоточиться на этом, но не могу понять.
Заранее спасибо.