`
由wolfe.a.jason报告,2009年2月4日
描述这个特性/更改。
为Clojure添加“keyset”;使APersistentMap的.keySet返回一个
IPersistentSet
这个问题在群里讨论过吗?如果是,请提供讨论链接
的链接
http://groups.google.com/group/clojure/browse_thread/thread/66e708e477ae992f/ff3d8d588068b60e?hl=en#ff3d8d588068b60e
附加了一个补丁。一些备注
我选择添加一个“keyset”函数,而不是更改现有的“keys”,
以免破坏任何东西。
相应的RT.keyset函数仅调用参数的.keySet。
如果传递一个(非Clojure)java.util.Map给“keyset”,
我希望它返回一个IPersistentSet,但这似乎在
无法在多项式时间内完成,因为这实际上是由于
上述线程中提到的相同限制(Map接口不支持getKey()或entryAt())——
再次假设“get”应该返回集合中实际(相同的)
关键字,而不仅仅是.equal关键字。
然后我将APersistentMap的.keySet的
实现修改为几乎复制APersistentSet。另一种更简洁的替代方法
是扩展APersistentSet并重写.get方法,但我有点紧张(
因为如果APersistentSet发生变化,可能会破坏)。
无论如何,这是我为Clojure的Java端提交的第一个补丁,
我还没有完全掌握约定和美学,因此
评论/提问/批评/修订请求都十分欢迎。
`