【发布时间】:2010-09-22 12:11:46
【问题描述】:
我能找到所有采用特定类型参数的函数/宏吗?
例如,什么函数接受命名空间对象作为参数?
(这是因为我可以创建一个命名空间并将其存储在一个 var 中,但我不知道我可以在哪里使用该 var;我可以将该 var 传递给什么函数?)
这里有一些代码:
user=> (def working-namespace (create-ns 'my-namespace))
#'user/working-namespace
;i created a namspace and want to use it later
user=> (class working-namespace)
clojure.lang.Namespace
; out of curiosity i found out that "working-namespace" is a Namespace object
user=> (ns working-namespace)
nil
working-namespace=>
; but how do i switch to it ? this didn't do what i wanted...
user=> (refer working-namespace)
java.lang.ClassCastException: clojure.lang.Namespace cannot be cast to clojure.lang.Symbol (NO_SOURCE_FILE:0)
; this did not work either as my expectations
user=> (the-ns working-namespace)
#<Namespace my-namespace>
user=> (class (the-ns working-namespace))
clojure.lang.Namespace
; great, this gave me the same thing, a Namespace
因此问题是:我如何动态使用它(这就是我将命名空间放入 var 的原因)?我如何从指向命名空间的 var 中获得对我有用的东西?
我可以尝试四处寻找利用命名空间对象或将其转换为其他东西的函数。我做了并且只找到了“实习生”。手动搜索似乎没有那么有希望
如果我有一百万次遇到这个问题怎么办?有没有一种自动化的方法可以让我得到我正在寻找的东西,而不必每次都四处询问?
【问题讨论】:
-
如果您解释您要完成的工作,而不是询问如何执行某个实现,您可能会得到更有用的答案,因为后者可能存在固有缺陷或排除了对前者的更好解决方案。例如,问如何过河,而不是如何建造一座桥。
-
为什么不用 clojure 脚本检查源代码 ;)?
-
@Alex Taggart:好的,用示例创建了一个更详细的用例。怎么办 ? :P
标签: function parameters clojure types