Clojure-比较一条线与一个字符串

时间:2017-10-03 08:57:44

标签: clojure

    (def filename "dictionary2.txt")

    (defn check_word [filename word]
      (with-open [r (clojure.java.io/reader filename)]
        (doseq [line (line-seq r)]
          (if (compare line word)
            (println word)))))

    (check_word filename "wizard")

打印“找到”的数量与文本文件中的行数一样多。为什么if语句总是返回true?字典文件中确实存在“向导”一词。

1 个答案:

答案 0 :(得分:1)

根据文档,compare function返回负数,零或正数,具体取决于其参数的顺序。数字被视为truthy values,因此它们总是使条件表达式的 then 分支执行。 Clojure中唯一的 falsey 值为nilfalse

如果您想检查line是否等于word,您只能(= line word)使用DATA: wa_collectoraction TYPE zcollectoraction, it_collectoraction LIKE STANDARD TABLE OF zcollectoraction.