请在 2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取更多关于如何使用本网站的信息。

+2
Clojure

`
由 wolfe.a.jason 报告,2009 年 2 月 4 日

描述此功能/更改。

将“keyset”添加到 Clojure 中;使 APersistentMap 的 .keySet 返回一个
IPersistentSet

此问题在群组中讨论过吗?如果是这样,请提供讨论的链接
链接

http://groups.google.com/group/clojure/browse_thread/thread/66e708e477ae992f/ff3d8d588068b60e?hl=en#ff3d8d588068b60e


附上一个补丁。一些说明

我选择添加一个“keyset”函数,而不是改变现有的“keys”,
以避免破坏任何东西。

相应的 RT.keyset 函数只是对参数调用 .keySet。
我本想使“keyset”返回 IPersistentSet,即使传递的是
(non-Clojure) java.util.Map,但因为本质上与上述线程中提到的
相同的限制(由于 Map 接口不支持 getKey() 或 entryAt()),这在
亚线性时间内似乎是不可能的 --
再次假设“get”应该返回集合中的实际(相同的?)
键,而不是仅仅是 .equal 键。

然后我更改了 APersistentMap 的 .keySet 的实现,使其基本上
复制 APersistentSet。一个更简洁的替代方案是扩展 APersistentSet 并
覆盖 .get 方法,但这对我的影响有些担心(因为如果 APeristentSet 改变
了,可能会破坏)。

无论如何,这是我为 Clojure 的 Java 端编写的第一个补丁,而且我
对约定和美学还没有完全确信,所以
评论/问题/批评/要求修订都是非常受欢迎的。

`

5 答案

0

评论由:importer 提出

richhickey 表示:更新问题(#8、#19、#30、#31、#126、#17、#42、#47、#50、#61、#64、#69、#71、#77、#79、#84、#87、#89、#96、#99、#103、#107、#112、#113、#114、#115、#118、#119、#121、#122、#124)

0
by

评论由:importer 提出

oranenj 说:(链接:[file:dKgE6mw3Gr3O2PeJe5afGb])

0
by

评论者:stu

补丁格式不正确

0
by
参考:https://clojure.atlassian.net/browse/CLJ-69 (由 alex+import 报告)
...