我正在閱讀Andre Ben Hanou的「Practical Ruby for System Administration」,它有一個單行命令,列出大小大於1KB的目錄中的所有文件,然後按照修改日期。瞭解Ruby中Enumerable的查找函數
ruby -e 'puts Dir["*"].find { |f| File.size(f) > 1024 }.sort_by{|f| File.mtime(f)}'
我認爲這應該是select
而不是find
。
根據find
的文檔,它會返回塊不爲false的第一個。因此,在任何情況下,find
都不會返回文件列表。這就像書中的第19頁,我對Ruby完全陌生,我認爲作者是錯誤的,因爲書中的命令已經給我一個錯誤。
[email protected] /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)
[email protected] /tmp $
任何人都可以確認作者是錯誤的或我只是很愚蠢?
上有SO說明塊可如何被傳遞到功能衆多的答案。因爲SO想要一個問題而不是幾個問題,所以應該刪除這個單獨的問題,做一些搜索以獲得更多信息,並查看塊是否有意義。閱讀「[編程紅寶石](方法和塊)」的「方法和塊」部分,其中討論了它。 –