2024年Clojure调查中分享您的观点!

欢迎!请查看关于页面,了解更多关于此如何工作的信息。

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])
    
  • 通常要重复任何基于输入集合的操作,您需要将此函数映射到您的文件集合。

...