#ruby
#ruby
Вопрос:
У меня есть модуль
# File 1.rb
module Search
class A
attr_accessor :results
def find_results
self.results = [somethings]
end
def do_something_with_results
b = B.new.do_something
b.response #=> something
c = C.new.use_b_response_do_something
return c.did_something
end
end
end
# File 2.rb
module Search
class B
end
class C
end
end
У меня есть модуль Search
с классами A, B, C
Класс A что-то делает и возвращает данные, которыми необходимо поделиться с классами B и C, чтобы что-то сделать с этими данными (уточнить их, отправить куда-нибудь, вернуть true или false).
Как я могу поделиться этой информацией между классами? Я делал это, что, на мой взгляд, неправильно
def do_something
b = B.new.doing_something
c = C.new.something_else(b.some_attr)
end
что неэффективно
Комментарии:
1. Не совсем ясно, каков ваш вариант использования, но вы могли бы попробовать использовать наследование. Если
A
,B
, иC
все они наследуются от общего базового класса, вы можете использовать переменную класса, например@@my_class_variable
, для обмена данными между классами.
Ответ №1:
Я не вижу никаких проблем в вашем коде. Кажется, вы делаете все так, как это должно быть сделано. Использование методов для получения и передачи данных.
Одна вещь, которая может улучшить ваш код, — это передача b в c вместо этого.
def do_something
b = B.new.doing_something
c = C.new(b).something_else
end
Но это зависит от вашего варианта использования…