如何在没有限定符的所有命名空间中访问命名空间中的符号?

时间:2016-05-24 13:03:41

标签: clojure namespaces

我的命名空间包含仅在开发中使用的调试实用程序。我想在没有限定符的所有名称空间中访问它们(与clojure.core中的符号相同)。

假设我的项目结构如下:

dbg_utils.clj

(ns project.dbg-utils)

(defmacro dbg ...)

db.clj

(ns project.db)

(defn create-entity [...]
  ...)

在我想要启动REPL并键入以下内容之后:

> (require 'project.db)
> (require 'project.dbg-utils)
> (globalize-symbol 'project.dbg-utils/dbg)

使用dbg宏后没有限定符:

(ns project.db) ;; no require of project.dbg-utils

(defn create-entity [...]
  (dbg ...) ;; and no qualifier here
  ...)

是否有globalize-symbol(或接近此)可用?

1 个答案:

答案 0 :(得分:2)

Leiningen为此提供c = colorbar(); drawnow; alphaVal = 0.1; % Make the colorbar transparent cdata = c.Face.Texture.CData; cdata(end,:) = uint8(alphaVal * cdata(end,:)); c.Face.Texture.ColorType = 'truecoloralpha'; c.Face.Texture.CData = cdata; drawnow % Make sure that the renderer doesn't revert your changes c.Face.ColorBinding = 'discrete'; % Print your figure print(gcf, 'Parula.png', '-dpng', '-r300'); % Now change the ColorBinding back c.Face.ColorBinding = 'interpolated'; % Update the colormap to something new colormap(jet); drawnow % Set the alpha values again cdata = c.Face.Texture.CData; cdata(end,:) = uint8(alphaVal * cdata(end,:)); c.Face.Texture.CData = cdata; drawnow % Make sure that the renderer doesn't revert your changes c.Face.ColorBinding = 'discrete'; print(gcf, 'Ugly_colormap.png', '-dpng', '-r300'); 功能和:injections个人资料。

This article分享了如何做到这一点的一些指示。它基本上是通过添加你想要的调试函数:user来工作的,因为在使用clojure.core宏时,所有来自这个命名空间的公共变量都被包含在内(除非你另有说明),你将可以使用它们你的名字空间。