从select中删除哈希项

时间:2015-05-08 05:44:37

标签: ruby

有没有办法从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

1 个答案:

答案 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