有没有办法从select中删除哈希项?我想检查目录中是否存在文件,如果存在,则将其从哈希中删除。
hash = {"http://s3-us-west-2.amazonaws.com/packages/ics/ics_4.0.0.tar.gz"=>"5103909285b549eda0b6a13dd503790a", ...}
hash.select do |k,v|
if File.file?("#{k[/[^\/]+$/]}")
# Remove from hash
end
end
答案 0 :(得分:2)
你不能删除select中的元素,delete_if
是个不错的选择。
hash.delete_if { |k,_| File.file?("#{k[/[^\/]+$/]}") }
更新
hash_copy = hash.dup
hash.select do |k,v|
if File.file?("#{k[/[^\/]+$/]}")
hash_copy.delete(k)
......
end
end