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
by

评论由:stu

我不确定我是否喜欢这个,但我希望对名称和命名空间进行反思。在进行大量跨语言工作时,如果存在“我有名称”和“我有命名空间”的协议,那将是非常棒的。

有了这样的协议,也有可能单独考虑根据它们实现 symbol 等内容。

0
by

评论由: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
by

评论由:joegallo发表

Stuart,我对为Named和Namespaced创建单独协议的想法并不反对。我应该去哪里创建一个建议来创建这些协议并将它们集成到clojure中?我对此很感兴趣,想做一些相关工作,但作为一个旁观者,我不知道下一步该怎么做——在Jira上创建一个工单耗尽了我对这一过程的知识。

0
by

评论由:franks发表

joe对symbol的建议同样适用于keyword。

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

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

-FrankS.

0
by

评论由:ambrosebs发表

我曾对此进行投票,但后来撤回了我的投票。对我来说,两个参数都是字符串的明确实现是正确的,但对于符号/命名空间/命名/命名空间化的实体的组合来说并不那么清晰。

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