我正在尝试使用协议来创建工程编号类型(“knumber”),所以我可以说(+ "1k" "2Meg")
并得到类似"2.001Meg"
. 我应该能够像这样从 knumber 中获取浮点值(:val my-knumber)
,但通常打印机应该显示字符串,它也可以像这样访问(:string my-knumber)
。这个数字将支持所有常用的 p、n、u、m、k、Meg、G 后缀,并在其中根据需要进行转换,例如(/ "1Meg" "1G") -> "1m")
. 我希望能够将其传递给任何需要数字的函数。
无论如何,有人可以为此提出一个策略吗?我想我需要使用协议。我目前有一个(defrecord knumber [val string])
,但我不确定下一步是什么。
clojure 数字满足哪些协议?我想我需要为此扩展一些现有的协议/接口。
谢谢