首页 > 解决方案 > 尝试在 Clojure 中拆分字符串遇到惰性序列问题

问题描述

我正在解决一个读取文件的问题,其中包含以下行:

A abcdefg
B bcdefgh

但是我不断收到有关与 Java Charseq 不兼容的延迟序列的错误。

我试过了:

(def notlazy (doall lyne2))

然后以为我验证了:

(realized? notlazy)
true

但仍然:

(str/split notlazy #" ")
ClassCastException class clojure.lang.LazySeq cannot be cast to class
  java.lang.CharSequence (clojure.lang.LazySeq is in unnamed module of
  loader 'app'; java.lang.CharSequence is in module java.base of loader
  'bootstrap')  clojure.string/split (string.clj:219)

请帮忙!

标签: clojurelazy-evaluationlazy-sequences

解决方案


to 的第一个参数str/split必须是CharSequence要拆分的 a。大概你想分割序列中的每个输入行,你可以使用它map而不需要急切地评估输入序列:

(map (fn [line] (str/split line #" ")) lyne2)

推荐阅读