2024 Clojure状态调查!分享您的想法。

欢迎!有关如何使用此服务的更多信息,请参阅关于页面。

+2
Clojure
已关闭

ClojureScript有{{uuid}}和{{random-uuid}}函数。在这些函数可用的情况下,ClojureScript更加方便,我认为这些函数对Clojure来说也非常有用,可以提高代码的可移植性。对这个补丁有兴趣吗?

已关闭并注解:Clojure 1.11.0-alpha3增加了`random-uuid`和`parse-uuid`函数

8 答案

+1

评论由:wilkerlucio发表

(链接:~alexmiller) 我理解使其完全兼容会更好。但说实话,作为一名编写大量CLJC的用户,如果我们只有uuidrandom-uuid(尤其是后者),就会解决我99%的UUID需求,我想对大多数人来说也是如此。我们是否可以先添加那些对所有人都有益的,而将详细介绍UUID的功能放在一个单独的问题票据中?

今天我自己也遇到了这个问题。在 `.clj` 文件中输入 `uuid` 希望在完成类似的 ClojureScript 任务后从字符串构造 uuid。导入 `java.util.UUID` 并调用 `UUID/fromString` 运行良好,但如果 `uuid` 是 `clojure.core` 函数那就更好了。对 `clojure.core` 中的 `random-uuid` 也表示赞同(而不是现在用的 `UUID/randomUUID`),因为它具有更好的可移植性。
0

评论者:alexmiller

做这个的主要原因可能是可移植性。最合理的做法是生成 java.util.UUID。这与 ClojureScript 中的操作是一致的吗?也就是说,创建和 使用 uuid 的相同代码是否可以在两个平台上都工作?如果不能,那么这样做可能没有很好的理由。

0

评论者:[email protected]

最合理的做法是生成 java.util.UUID——这与 ClojureScript 中的操作是一致的吗?

ClojureScript 定义了自己的 UUID 类型,因为在 JavaScript 中没有这样的类型。链接。我不太明白你说的“一致”是什么意思。

也就是说,创建和使用的 uuid 的相同代码是否可以在两个平台上工作?

CLJS UUID 不支持 Java UUID 的所有方法,但重要的是有的(等价性、从字符串构造、将字符串打印出来)并且这足以在处理 uuid 时显著提高可移植性。

0

评论者:bronsa

Clojure 和 ClojureScript 都有带标签的字面量 uuid,这应该足够进行互操作。

0

评论者:alexmiller

我知道这一点,只是想知道是否有任何在 uuid 上可以调用的方法需要便携的等效函数,比如 链接 中的内容。

0
_评论者:[email protected]_

在这里的大部分额外方法都是用于区分不同类型的UUID,或者从基于时间的UUID中获取信息。


clockSequence() - 基于时间
compareTo(UUID val) - 不确定是否需要等价
boolean equals(Object obj) - 无需操作
static UUID fromString(String name) - 构造函数
long getLeastSignificantBits() - 不确定这两个的重要性
long getMostSignificantBits()
int hashCode() - 无需操作
static UUID nameUUIDFromBytes(byte[] name) - 这是否有用/重要?
long node() - 只对基于时间的UUID有用
static UUID randomUUID() - 将实现此功能
long timestamp() - 基于时间的UUID
String toString() - 无需操作
int variant() - 用于区分不同类型的UUID
int version() - 用于区分不同版本的UUID



我可能在这里也看到了将基于时间的UUID包含在内的一个论点,但我不确定它们是否足够常用以至于值得这样做,并且它们需要添加到CLJS等中。

在Clojure代码中有使用一些这些方法
https://github.com/search?l=clojure&q=.getLeastSignificantBits&type=Code&utf8=✓
https://github.com/search?utf8=✓&q=%22.nameUUIDFromBytes%22+language%3Aclojure&type=Code&ref=searchresults

但不到直接构造函数的1/100
https://github.com/search?utf8=✓&q=java+util+UUID+language%3Aclojure&type=Code&ref=searchresults(这是一个有缺陷的搜索查询,但这是我能做到的最好的)。
0
by

评论者:alexmiller

我的主要观点可能是:与其只考虑uuid/random-uuid函数,让我们考虑问题是:我们如何在Clojure/ClojureScript中添加可移植的UUID支持?这是一项更多的工作,但在我个人看来更有价值。

所以也希望能考虑以下内容(有些已经存在,但可能没有经过便携性测试)
- 构建
- 打印 - 打印,pr,美化打印
- 读取
- 哈希码
- 位与字之间的转换
- 字符串与字之间的转换
- 提取组件

然后我认为考虑这些应该在核心还是在data.uuid等中是值得考虑的。

我认为最好在设计页面上工作,而不是在这里(这个票据只是更大问题的一个单位)。也许http://dev.clojure.org/pages/viewpage.action?pageId=950382能提供一些指导。

0
by
...