String # capitalize возвращает копию объекта с заглавной первой буквой. В основном вы делаете циклический просмотр массива и генерируете новые копии строк, а затем сразу выбрасываете их.
У вас есть несколько способов приблизиться к этому:
- Вы можете использовать #map вместо #each, чтобы взять каждый результат вашего тела блока l oop и собрать его в новый массив:
array = ["car","carrs"]
capitalized_array = array.map { |x| x.capitalize }
Или, если вы действительно хотите изменить исходные строки, используйте
String # capitalize! вместо
capitalize
, который изменяет входной объект, а не возвращает новый объект:
array = ["car","carrs"]
array.each { |x| x.capitalize! }
Хотя использование мутативной версии может показаться заманчивым, часто рекомендуется использовать немутативные методы для преобразования ваших данных, чтобы не потерять исходные входные данные. Мутирование на месте может привести к незначительным ошибкам, затрудняя рассуждение о состоянии данных.