Я инициализирую массив таким образом:
array = Array.new
array << '1' << '2' << '3'
Возможно ли это сделать за один шаг? Если да, то как?
ruby
arrays
initialization
user502052
источник
источник
array = Array.new << 1 << 2 << 3
)1
на'1'
.Ответы:
Вы можете использовать литерал массива:
Вы также можете использовать диапазон:
Для массивов строк, разделенных пробелами, вы можете использовать синтаксис Percent String :
Вы также можете передать блок, чтобы
Array.new
определить, каким будет значение для каждой записи:Наконец, хотя он не создает тот же массив из трех строк, что и другие ответы выше, обратите внимание также, что вы можете использовать перечислители в Ruby 1.8.7+ для создания массивов; например:
источник
to_a
([*'1'..'3']
).Array[ "1","2","3"] #=> ["1","2","3"]
(я не думаю, что этот метод имеет какое-либо отношение к конструктору литерала массива). Вы также можете использовать массив # ядра верхнего уровня (имя метода действительно похоже на имя класса)Array(1..5) #=> [1,2,3,4,5]
Один лайнер:
или
или
или
или
источник
[1,2,3]
который выполняет единственную инициализацию. Также у вас больше персонажей. Кроме того, вы создали массив Fixnums, в то время как OP спрашивал о массиве строк.Наряду с приведенными выше ответами вы тоже можете это сделать
источник
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
.Чтобы доказать, что существует более
одногошести способов сделать это:Если 1. метод (: +) невозможен, вы также можете сделать
Конечно, в этом сценарии это излишне, но если
plus_1
это действительно длинное выражение, вы можете поместить его в отдельную строку от создания массива.источник
Ты можешь сделать
Как отмечали другие, вы также можете инициализировать массив с обозначением% w следующим образом:
или
Обратите внимание, что в обоих случаях каждый элемент является строкой, а не целым числом. Поэтому, если вам нужен массив, элементы которого являются целыми числами, вы не должны заключать каждый элемент в апострофы:
Кроме того, вам не нужно ставить запятую между элементами (что необходимо при создании массива без этой записи% w). Если вы сделаете это (что я часто делал по ошибке), например:
его элементами будут три строки - «1», «2», «3». Итак, если вы это сделаете:
вывод будет:
чего мы здесь не хотим.
Надеюсь, это поможет прояснить суть дела!
источник
Чтобы создать такой массив, вы можете:
источник
Если у вас есть массив строк, вы также можете инициализировать его следующим образом:
array = %w{1 2 3}
просто разделите каждый элемент любым пробелом
источник
Вы можете инициализировать массив за один шаг, записав элементы
[]
следующим образом:источник
Вы можете просто сделать это с помощью
%w
обозначений в рубиновых массивах.Он добавит в массив значения 1,2,3 и распечатает результат как
["1", "2", "3"]
источник