问题是,如果我通过08或09传递此函数(在我的REPL中),它将给我一个错误。
我尝试过删除括号,以查看错误是否会消失。
(defn format-pump-number [number]
(if (.contains (str number) "0")
(str number)
(str "0" number))
(if (> number 9)
(if (< number 100)
(str number)
(throw (Exception. "Dispenser number can only be 2 characters!"))))
(str "0" number))
我希望[number]传递正确的数字时会返回08或09。
答案 0 :(得分:0)
计算机通常将ceil(100/24) = 5
或08
之类的数字解释为八进制,这是一个错误,因为八进制数字仅从0..7开始。从历史上看,人们认为使用前导零字符09
是一种聪明的代码类型,这意味着“下一个数字应以base-8而不是base-10来解释”。
您已经发现,这种过于聪明的尝试会在今天引起问题。
因此,这根本不是您的功能,只是一条错误的错误消息。观察:
0
但是
(println "val=" 8) => `val= 8`
我没有收到有关“不匹配的分隔符”的错误消息,所以我不确定这是怎么产生的。