欢迎!请参阅 关于 页面了解更多此网站的详细信息。
ClojureScript 有 {{uuid}} 和 {{random-uuid}} 函数。这些函数在 ClojureScript 中很有用,我认为在 Clojure 中也有用,可以提高代码的可移植性。对此有何建议?
评论者:wilkerlucio
(链接: ~alexmiller) 我理解使它完全兼容会很好,但老实说,作为一个写了很多 CLJC 的用户,如果我们只有 uuid 和 random-uuid(尤其是后者),就可以解决我 99% 的 UUID 需要,我想对大多数人来说也是如此。我们不能先添加那些对 everyone using 都有把握的,然后把详细设计的 UUID 事情留在一个单独的条目上吗?
uuid
random-uuid
由 alexmiller 发布的评论
我认为这样做的主要原因是移植性。最好生成 java.util.UUID,这在 ClojureScript 中也会很合适吗?也就是说,用于创建和 使用 uuids 的同一代码是否可以在两个平台上运行?如果不能,那么这样做的理由可能并不充分。
由 [email protected] 发布的评论
最好生成 java.util.UUID,这在 ClojureScript 中也会很合适吗?
ClojureScript 定义了自己的 UUID 类型,因为 JavaScript 中没有。 https://github.com/clojure/clojurescript/blob/dd589037f242b4eaace113ffa28ab7b3791caf47/src/main/cljs/cljs/core.cljs#L10088-L10128。我不太确定你说的“合适”是什么意思。
也就是说,用于创建和使用 uuids 的同一代码能否在两个平台上运行?
CLJS UUID 不支持 Java UUID 的所有方法,但重要功能都有(等效性、从字符串创建、字符串输出),这将显著提高在使用 UUID 时的工作移植性。
由 bronsa 发布的评论
clojure 和 clojurescript 都有 uuid 标记字面量,这对于互操作性应该足够。
我了解这一点,只是想知道是否有任何在 uuid 上可以调用的函数需要在便携的等价物上,比如在 http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html 中的东西。
我的主要观点可能是:与其只考虑uuid/random-uuid函数,不如考虑这个问题:我们如何在Clojure/ClojureScript中添加可移植的UUID支持?这是一项更多的工作,但据我看来,这要更有价值。
因此,还需要考虑以下问题(其中一些已经存在,但可能还没有进行过可移植性的测试)- 构造- 打印 - 打印、pr、漂亮打印- 读取- 哈希码- 转换为/从位- 转换为/从字符串- 提取组件
然后我认为考虑这部分是否应该包含在核心库中(在data.uuid等库中)是很值得的。
我认为最好是根据设计页面进行这项工作,而不是在这里(这项工单只是更大问题的一个小部分)。也许http://dev.clojure.org/pages/viewpage.action?pageId=950382可以提供一些指导。