我一直在努力想象这个我们有一段时间了。Clojure'如果'从来没有评估过它的第三个参数
(defn is-decimal [astr]
(if (. astr (indexOf (int \.)))
(Double/parseDouble astr)
(Integer/parseInt astr)))
这是我写的函数。 is-decimal
要么通过诸如“2.5”或“5”之类的东西,但总是使用if
的第二个参数,而不是第三个参数。我在REPL中测试了(. astr (indexOf (int \.)))
,它似乎工作正常,它在失败时返回-1,在失败时返回1。我相信这可能是问题所在。在Clojure中-1并不意味着错误。任何人都可以想办法解决这个问题吗?
在此先感谢。
编辑:谢谢你们的帮助。在我写这篇文章之后,我有了一个想法。我写了一个谓词函数来检查1和-1。正是我需要的。我不应该醒来后直接代码:\
这是我唯一讨厌Clojure的东西,我无法知道我在找什么功能:\ – Rayne 2009-02-06 21:10:27