注释掉了在clojure中导致运行时错误的代码

时间:2012-05-18 07:30:41

标签: clojure comments geoip

context:我正在编写Cascalog作业以在Amazon EMR中运行。 Cascalog是一个基于clojure的lib,用于运行MapReduce。由于一些奇怪的类加载异常而导致作业失败。

在作业中,我使用了一个名为geocoder的lib,它是一个基于clojure的geoip查找库。特别是我使用的是查看maxmind GeoLiteCity.dat文件的lib部分。我发现导致作业失败的代码部分是使用地理编码器库的部分。**

最奇怪的是,虽然删除这部分代码会导致作业成功,但评论却不会......只是想知道是否有人知道发生了什么事?

** 我使用geocoder lib的方式如此

(ns utils.geoip(:使用[geocoder.core]))

然后我的工作需要上面的

(ns myjob(:require [utils.geoip:as geoip]))

1 个答案:

答案 0 :(得分:1)

您的问题的答案可能取决于您使用哪种技术来评论违规代码?即,您使用的是;还是多行(comment foo)宏?

我问的原因是虽然用;注释掉的代码被完全忽略,但comment宏需要一个语法正确的S表达式作为正文;因此,一个简单的语法错误可能会导致您认为被忽略的代码中的意外错误。

换句话说:评论宏不允许任意文本。