我想用1个元素填充一个数组但是5次.到目前为止我得到了什么.
str = 1234
a = []
5.times { a << str }
puts a # => 1234, 1234, 1234, 1234, 1234
它有效,但这不是红宝石的方式.有人能指出我正确的方向来初始化一个具有5倍相同值的数组吗?
saw*_*awa 64
Array.new(5, str)
# => [1234, 1234, 1234, 1234, 1234]
顺便说一句,这是一个不好的做法来命名一个变量str分配值1234.这令人困惑.
Mar*_*pka 25
这应该工作:
[1234] * 5
# => [1234, 1234, 1234, 1234, 1234]
hji*_*ing 13
虽然在字符串和其他不可变对象的情况下接受的答案很好,但我认为值得扩展Max对可变对象的评论.
以下将使用3个单独实例化的哈希填充元素数组:
different_hashes = Array.new(3) { {} } # => [{}, {}, {}]
以下内容将填充一个元素数组,并引用相同的哈希3次:
same_hash = Array.new(3, {}) # => [{}, {}, {}]
如果修改different_hashes的第一个元素:
different_hashes.first[:hello] = "world"
只会修改第一个元素.
different_hashes # => [{ hello: "world" }, {}, {}]
另一方面,如果修改same_hash的第一个元素,则将修改所有三个元素:
same_hash.first[:hello] = "world"
same_hash # => [{ hello: "world" }, { hello: "world" }, { hello: "world" }]
这可能不是预期的结果.
| 归档时间: | 
 | 
| 查看次数: | 24220 次 | 
| 最近记录: |