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

欢迎!请参阅 关于页面,了解更多有关本站如何运作的信息。

0
Clojure

我遇到过几次需要这样做(symbol ns "bar")的情况,现有方法(symbol (name (ns-name ns)) "bar")似乎并不应该是唯一的方法。包括一个补丁,通过给 Symbol.intern() 添加一个新的参数来实现这一点。

关于这个想法的讨论在这里: https://groups.google.com/forum/#!topic/clojure/n25aZ5HA7hc/discussion

6 个答案

0

stu 发布的评论:

我不太确定我是否喜欢这个,但我想重新考虑一下名称和命名空间。在进行大量跨语言工作时,如果能有一个“我有名称”和“我有命名空间”的协议那就太棒了。

如果有了这样的协议,也可以分别考虑在它们的基础上实现 symbol 等等。

0

hiredman 发布的评论:

命名是一个协议或接口,似乎与能够手动创建命名空间限定的符号无关。

我认为这个补丁还不够远,不仅仅应该支持(symbol ns "foo"),也应该是(symbol ns 'foo'),鉴于(symbol 'foo')和(symbol "foo")都有效,那么(symbol 'bar' 'foo')也应该是有效的,但事实并非如此。

如果Named是一个协议,并且您将其扩展到String,并且您使符号函数从一到两个Named项创建符号,您仍然需要编写(symbol (ns-name ns) 'foo')或(symbol (ns-name ns) "foo")

0
作者

评论者:joegallo

斯图尔特,我不反对为Named和Namespaced创建单独的协议的想法。关于创建这些协议并使它们进入clojure的提议,我应该去哪里呢?我有兴趣做一些前期工作,或者成为其中的一员。但作为一个局外人,我不知道下一步该做什么——在Jira上创建一个工单已经消耗了我对这个过程的了解。

0
作者

评论者:franks

对于symbol,Joe提出的相同或相似的增强也适用于keyword。

见:http://groups.google.com/group/clojure/browse_thread/thread/222e4abc16df8b20

可能相同的/类似解决方案适用于这两个问题。

-FrankS.

0
作者

评论者:ambrosebs

我对这件事投过票,但我撤回了我的投票。两个参数都是字符串显然是正确的实现,但符号/命名空间/命名/命名空间事物的组合不太清楚。

0
作者
参考:https://clojure.atlassian.net/browse/CLJ-891 (由joegallo报告)
...