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 添加

斯图尔特,我并不反对为命名和命名空间建立单独的协议的想法。我应该去哪里创建一个提案,并让这些协议被加入到 Clojure 中呢?我对做这项工作或者成为其中的一员很感兴趣。但是作为一个局外人,我不知道下一步该做什么——在 Jira 上创建一个工单已经用尽了我对过程的知识。

0

评论:由 franks 添加

joe 对 symbol 提出的相同增强也将适用于 keyword。

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

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

-FrankS.

0

评论:由 ambrosebs 添加

我投过票,但我撤回了我的投票。对我而言,两个参数都是字符串的明显是正确的实现,但是符号/命名空间/命名/命名空间化事物的组合并不清晰。

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