在clojure get中;空指针异常";什么时候做(第一次)

在clojure get中;空指针异常";什么时候做(第一次),clojure,Clojure,我在重现一个bug时遇到了问题,当我第一次调用PersistentArrayMap时,我得到了一个空指针异常。如果我复制并粘贴贴图并首先调用它,它会工作,但是当贴图位于ref中时,它就不工作了。这是与懒惰有关的奇怪行为吗(不是我自己的) 更新:我无法生成一个每次都失败的示例,因此我现在强制对所有内容进行评估,它似乎可以工作首先调用永远不会导致NPE,因此问题出在其他地方。我猜你试图取消一个零的裁判: user=> (first @nil) java.lang.NullPointerExce

我在重现一个bug时遇到了问题,当我第一次调用PersistentArrayMap时,我得到了一个空指针异常。如果我复制并粘贴贴图并首先调用它,它会工作,但是当贴图位于ref中时,它就不工作了。这是与懒惰有关的奇怪行为吗(不是我自己的)


更新:我无法生成一个每次都失败的示例,因此我现在强制对所有内容进行评估,它似乎可以工作

首先调用
永远不会导致NPE,因此问题出在其他地方。我猜你试图取消一个零的裁判:

user=> (first @nil)
java.lang.NullPointerException (NO_SOURCE_FILE:0)

首先调用
永远不会导致NPE,因此问题出在别处。我猜你试图取消一个零的裁判:

user=> (first @nil)
java.lang.NullPointerException (NO_SOURCE_FILE:0)

当我怀疑自己可能被懒虫咬了的时候,我的总体计划是

doseq
放在所有东西周围,直到故障点开始改变


附:粘贴堆栈跟踪将有助于给出更好的答案

当我怀疑自己可能被懒虫咬到时,我的总体计划是

doseq
放在所有东西周围,直到故障点开始改变


附:粘贴堆栈跟踪将有助于给出更好的答案

请发布一些示例代码。你记得取消裁判吗?另外,我运行了一个示例,得到的是IllegalArgumentException而不是NPE。我正在尝试重现代码。实际数据在STM中,有时会发生,但很难再现确切的情况。我会尽快发布代码请发布一些示例代码。你记得取消裁判吗?另外,我运行了一个示例,得到的是IllegalArgumentException而不是NPE。我正在尝试重现代码。实际数据在STM中,有时会发生,但很难再现确切的情况。我会尽快发布代码。我首先调用的对象每次都会返回一组映射,但可能与ref有关。。我将进一步研究,我首先调用的对象每次都返回一组映射,但可能与ref有关。。我会调查更多是的,我已经开始强制评估,因为我无法得到一个单独的例子。但是,谢谢,我使用了doseq,现在问题似乎已经解决了。这是一个很好的建议——尽管我要补充一点,一旦你让它工作起来,你总是值得回顾代码,找出问题发生的原因。可能有一个微妙的设计问题需要你去解决,或者至少你会学会如何避免再次陷入相同的陷阱……记住再次取出剂量。是的,我已经开始强制评估,因为我无法得到一个单独的例子。但是,谢谢,我使用了doseq,现在问题似乎已经解决了。这是一个很好的建议——尽管我要补充一点,一旦你让它工作起来,你总是值得回顾代码,找出问题发生的原因。可能有一个微妙的设计问题需要你去解决,或者至少你会学会如何避免再次落入同一个陷阱……记住再次取出剂量。