了解Ruby中枚举的函数



我正在阅读Andre Ben Hanou的"实用Ruby for System Administration",该单线列出了一个单线,列出了一个目录中的所有文件,其大小大于1KB,然后由修改日期。

ruby -e 'puts Dir["*"].find { |f| File.size(f) > 1024 }.sort_by{|f| File.mtime(f)}'

我认为应该是select而不是find

根据find的文档,它返回了该块不是错误的第一个。因此,在任何情况下,find永远不会返回文件列表。就像书中的第19页一样,我对Ruby来说是全新的,我认为作者错了,因为书中的命令已经给了我一个错误。

shadyabhi@archlinux /tmp $ ruby -e 'puts Dir["*"].find { |f| File.size(f) > 1024 }.sort_by{|f| File.mtime(f)}'
-e:1:in `<main>': undefined method `sort_by' for "mysql-security-excerpt-5.1-en.pdf":String (NoMethodError)
shadyabhi@archlinux /tmp $ 

谁能确认作者错了,或者我只是很愚蠢?

您是对的,它应该是.select(或其别名.find_all,这可能是此错误的原因)。

在这种情况下,为每个对象评估块,以下是一个教程: http://www.tutorialspoint.com/ruby/ruby_blocks.htm

列表所有文件

是的,作者错了,你是对的。它应该是.select,而不是.find

最新更新