SMT*_*MTF 5 string file-io vector clojure
考虑以下:
=> (even? (count []))
true
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在考虑(假设我的文件是空的):
(odd? (count (str/split (slurp my-file) #"\|")))
true
Run Code Online (Sandbox Code Playgroud)
错误...为什么从空文件返回的向量不均匀(零)?
=>(str/split (slurp my-file) #"\|")
[""]
Run Code Online (Sandbox Code Playgroud)
啊,有人可以解释为什么在这种情况下返回一个空字符串?
我正在尝试确定文件中是否有奇数记录.
clojure.string/split用java.util.regex.Pattern/split做分割.有关Java的解释请参阅此问题.即,split即使模式根本不匹配,也会在模式的第一次匹配之前返回所有内容作为第一次分割.
测试集合(列表,数组,映射,字符串等)是否为空的规范方法是调用seq它,它将返回nil一个空集合.
(defn odd-number-of-records? [filename]
(let [txt (slurp filename)]
(when (seq txt)
(odd? (count (str/split txt #"\|"))))))
Run Code Online (Sandbox Code Playgroud)