协议有两种方法:
(defprotocol ITimeInterop
(parse-int [this str])
(stringify-time [this host-time]))
我在parse-int
点击stringify-time
:
(defrecord CljTime []
ITimeInterop
(parse-int [_ str]
(Integer. (re-find #"[0-9]*" str)))
(stringify-time [the-obj host-time]
(let [specific-format (SimpleDateFormat. "MM dd yyyy HH:mm:ss")
as-str (.format specific-format host-time)
[month day-of-month year time-str] (str/split as-str #" ")
month-as-idx (dec (parse-int the-obj month))]
{})))
我得到的错误消息是'java.lang.RuntimeException:无法在此上下文中解析符号:parse-int'。
我应该如何从parse-int
致电stringify-time
?
也许在parse-int前面使用一个点会有帮助吗?
回答很遗憾,我没有在问题中显示名称空间。使用点似乎可以工作,但更好的解决方案是:require
协议的命名空间:as
i
然后使用:(i/parse-int the-obj month)
进行调用。
答案 0 :(得分:1)
只要您提供parse-int
作为第一个参数,就stringify-time
调用this
应该没问题,这正是您所做的。但是在您提供的代码中,我希望错误消息“无法解析month
”。
我建议你先仔细检查一下你的问题。