我试图使用协议来创建一个工程编号类型(“knumber”),所以我可以说(+ "1k" "2Meg")
并得到类似"2.001Meg"
的东西。我应该能够从knumber中获得浮点值,就像(:val my-knumber)
一样,但通常情况下,打印机应该显示字符串,这也可以像(:string my-knumber)
那样访问。这个数字将支持所有通常的p,n,u,m,k,Meg,G后缀,并根据需要进行转换,如(/ "1Meg" "1G") -> "1m")
。我希望能够将此传递给任何需要数字的函数。如何在Clojure中扩展数字协议
无论如何,有人可以提出一个这样的策略?我想我需要使用协议。我目前有一个(defrecord knumber [val string])
,但我不确定接下来会发生什么。
什么协议clojure数字satsify?我想我需要为此扩展一些现有的协议/接口。
感谢
我知道这不是一回事,但你可以使用科学记数法:(/ 1e6 1e9) – DaoWen 2012-08-06 08:07:06