如果这个问题很愚蠢,我很抱歉,但我必须问。在 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 谢谢你的阅读。