2

不能在第 5 行设置断点,其中包含[x].

IntelliJ 不会让我这样做。我使用了不同的插件,例如La ClojureCursive。两者都停在 3 号线而不是 5 号线。

那么,人们是如何进入 Clojure 中的代码的呢?

是否有任何语法建议或工具可以帮助?

(defn flattenlist
  ([x & more]
    (concat (if (vector? x)
              (apply flattenlist x)
              [x]
            )
            (if (= more nil)
              nil
              (apply flattenlist more))))
  )
(flattenlist [[1 [[2]]] 3 [4 5] 6])
4

1 回答 1

3

首先,按照惯例,所有尾括号都在同一行,如下所示:

(defn flattenlist
  ([x & more]
   (println x)
   (concat (if (vector? x)
             (apply flattenlist x)
             [x])
           (if (= more nil)
             nil
             (apply flattenlist more)))))

(flattenlist [[1 [[2]]] 3 [4 5] 6])

其次,当您使用可组合函数时,很容易插入 println 并运行/测试该函数,因为它是引用透明的。我只是一个 Clojure 爱好者,但我通常使用 printlns 和单元测试进行调试。使用断点并不是那么可靠。

如果你真的想要类似于设置断点的东西,你可以尝试使用这个调试宏(不是我的)。

于 2014-07-29T15:03:22.380 回答