请分享您的想法,参与2024年Clojure调查!2024 State of Clojure Survey!

欢迎!请参阅关于页面以了解有关如何使用本站的更多信息。

0 个投票
Collections

如何读取文件列表,比较文件中的文本与一组键,如果该键存在于文件中,返回带有 true 或 false 值的键?

例如,我有以下文件列表

["src/cljs/project/cofx.cljs"
 "src/cljs/project/datetime.cljs"
 "src/cljs/project/core.cljs"
 "src/cljs/project/app_db.cljs"]

以及一组键

#{:tooltip/terminate
  :member-services/description
  :event-errors/link-duplicated
  :firm-admin/pre-approved-applicants}

我想读取所有文件(我使用了 slurp),将所有文件的文本与第一个键进行比较,并在该键存在于该文件中时返回该键、true 和文件名,如果该键不存在于所有文件中,则返回 false。

例如

[:tooltip/termiante true "src/cljs/project/cofx.cljs"
 :member-services/description false]

你有什么建议吗?因为这项任务对我来说非常困难。

1 个答案

+1 个投票

被选中
 
最佳答案

技巧。

  • 一次处理一个文件和一个键,然后扩展解决方案以处理多个文件和多个键
  • slurp 将完整的文件内容作为字符串返回。这意味着您的任务实际上是运行
    (clojure.string/includes? (slurp file) key-as-string)
  • 在此基础上,你可以创建一个函数来为你生成一个小向量。

    (fn [key file] 
    (if (clojure.string/includes? (slurp file) (str key))
        [key true file]
        [key false])
    
  • 要基于输入集合重复任何操作,你需要将该函数映射到文件集合上。

...