如何在Clojure中的fn中使用未定义的符号?

时间:2010-12-31 15:23:41

标签: clojure

在clojure中我想编写一个我可以这样称呼的函数:

(function undefined-symbol-which-means-something-else)

:有没有办法编写这样的函数而不诉诸',:或使用宏?

1 个答案:

答案 0 :(得分:5)

如果符号未定义,则总会出现错误。这是因为Clojure会在调用函数之前尝试解析符号,然后失败。

要考虑的一些选项(按照我个人的偏好顺序......):

  • 使用关键字(即“:my-keyword”) - 毕竟这是他们的设计目标!您永远不需要预先定义关键字。这也许是最惯用的做事方式。
  • 使用常规字符串作为参数。如果需要(符号“somename”)
  • ,您可以随后将其转换为符号
  • 如果函数是宏而不是函数,那么理论上你可以通过动态重新解释符号来实现你想要的东西。这是有效的,因为宏观扩展发生在评估之前。