two_foo = 2.times.map { "foo" }
two_foo[0] << "bar"
two_foo
# => ["foobar", "foo"]
Если "foo"
был выделен только один раз, а затем использован повторно, результатом будет ["foobar", "foobar"]
, что нарушит принцип наименьшего удивления .Если кто-то действительно хочет это сделать, следует явно использовать тот же объект:
foo = "foo"
two_foo = 2.times.map { foo }
two_foo[0] << "bar"
two_foo
# => ["foobar", "foobar"]