Извините, если этот вопрос тупой, но я должен спросить.
В PHP мы можем создать массив, не объявив его первым, хотя он и не считается хорошей практикой.
Используя свои новые знания Ruby, я писал код, чтобы вывести список файлов в каталоге и отсортировать их по расширениям. Для этого я запустил цикл для помещения их в разные массивы в зависимости от их расширений. Как это:
files_by_ext = {} #edited - my bad, it was supposed to be {}
files_by_ext['css'] = ['file.css','file2.css','file3.css']
files_by_ext['html'] = ['file.html','file2.html','file3.html']
Тогда я бы сортировал, используя ключи 'css' и 'html'. Но в процессе создания массива файлов «X» мне нужно было проверить, существует ли ключ «X». Я не мог просто нажать файл (например, 'file.X').
Есть способ создать методы для изменения этого поведения, чтобы я мог создать массив, выдвигающий элемент, не объявив его первым?
files.each do |f|
extension = /\.(.+)$/.match(f)[1].to_s
files_by_ext[extension] << f
end
А нет (это то, что я делаю):
files.each do |f|
extension = /\.(.+)$/.match(f)[1].to_s
if !files_by_ext.key?(extension)
files_by_ext[extension] = [f]
else
files_by_ext[extension] << f
end
end
Извините, я думаю, что написал слишком много. : P Спасибо, что прочитали.