Ответ 1
Я думаю, что это в основном сводится к решению о производительности. Из Ruby Documentation:
OpenStruct использует структуру поиска Rubys для поиска и определения и определения необходимых методов для свойств. Это достигается с помощью метода method_missing и define_method.
Это должно быть рассмотрено, если есть проблема с производительностью создаваемых объектов, поскольку в настройке этих свойств существует намного больше накладных расходов по сравнению с использованием Hash или Struct.
Кроме того, что-то вроде Hash
имеет дополнительную функциональность со всеми способами, которые он предоставляет (has_key?
, include?
и т.д.). OpenStruct
- это очень простой объект с этой точки зрения, но если у вас нет проблем с точки зрения производительности и просто нужен простой объект для работы, OpenStruct
- хороший выбор.