请在 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 的能力无关。

我认为这个补丁还不够充分,不仅应该支持 (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

Stuart,我不反对将Named和Namespaced分开成单独的协议。我应该去哪里创建创建这些协议的提案并将其放入clojure?我对做这项工作或成为其一部分感兴趣。但作为局外人,我不知道接下来该做什么--在Jira上创建一个问题已经耗尽了我对流程的了解。

0 投票

评论:franks

Joe为symbol提出的增强,也适用于keyword。

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

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

-FrankS.

0 投票

评论:ambrosebs

我对这进行了投票,但后来撤回了我的投票。两个参数都是字符串的正确实现对我来说很清楚,但符号/命名空间/命名/命名空间化对象组合不太清楚。

0 投票
...