如何设置数组的长度?

时间:2018-04-28 23:51:27

标签: arrays ruby

问题是我不知道我是否可以在Ruby中设置数组的长度,我想设置长度为10的数组的长度而不在其中写入10个变量,这是否可能,如果是这样的话我能做到吗?

2 个答案:

答案 0 :(得分:1)

创建一个给定大小的新数组,其元素设置为nil

Array.new(size)

设置为给定值的元素:

Array.new(size, "string")

请参阅https://ruby-doc.org/core-2.5.0/Array.html

答案 1 :(得分:0)

有多种方法可以做到这一点。

如果你只想要一个长度为nil的{​​{1}}数组,那么:

size

如果你想要一个除a = Array.new(size) 以外的数组,那么:

nil

会起作用,但请注意,如果a = Array.new(size, default_value) a = [default_value] * size 可变,这些可能会导致问题。这两个都为所有元素共享一个引用,如果您不了解引用共享,则会发生奇怪的事情;例如:

default_value

Ruby中的许多东西都是可变的,所以a = Array.new(6, 'pointer') # ["pointer", "pointer", "pointer", "pointer", "pointer", "pointer"] a[0].upcase! # "POINTER" a # ["POINTER", "POINTER", "POINTER", "POINTER", "POINTER", "POINTER"] 很少是你想要的。如果您使用布尔值,Array.new(size, default_value),数字,冻结字符串,符号等,那么这很好,因为您无法更改这些,参考分享不会让您感到困惑

您还可以向nil提供一个区块:

Array.new

将为每个条目执行该块,以便您获得任何惊喜参考共享:

a = Array.new(6) { 'unique' }

这通常是你想要的。当然,它可以消耗更多内存并花费更多时间来创建数组,但如果其中任何一个都很重要,那么你可能在Ruby中采取了错误的方法。