Для некоторых классов, которые нельзя изменить на месте (например, Fixnum
s), форма Array.new(X, object)
работает, как ожидается, и, вероятно, более эффективна (просто вызывает memfill
вместо rb_ary_store
и yield
в блок):
Для более сложных объектов у вас всегда есть блочная форма (например, Array.new(5) { Hash.new }
).
* Редактировать : * Изменено в соответствии с комментариями. Извините за глупый пример, я устал, когда написал это.