【问题标题】:Printing and reading lists from a file in Clojure从 Clojure 中的文件打印和读取列表
【发布时间】:2009-12-10 02:38:11
【问题描述】:

我有一个 Clojure 数据结构的形式:

{:foo '("bar" "blat")}

并尝试使用各种 pr/prn/print 将它们写入文件。但是,每次结构都写成

{:foo ("bar" "blat")}

然后当我尝试使用加载文件读取它时,我收到一个错误,例如:

java.lang.ClassCastException:java.lang.String 无法转换为 clojure.lang.IF n (build-state.clj:79)

大概是因为列表在读取时被评估为函数调用。有没有办法用引用形式的列表写出结构?

谢谢, 尼克

【问题讨论】:

    标签: clojure


    【解决方案1】:

    打印的反面通常是读取,而不是加载。

    user> (read-string "{:foo (\"bar\" \"blat\")}")
    {:foo ("bar" "blat")}
    

    如果确实需要打印可加载代码,则需要引用两次。

    user> (pr-str '{:foo '("bar" "blat")})
    "{:foo (quote (\"bar\" \"blat\"))}"
    
    user> (load-string (pr-str '{:foo '("bar" "blat")}))
    {:foo ("bar" "blat")}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2018-02-22
      相关资源
      最近更新 更多