gpt4 book ai didi

clojure - 为什么在使用 in-ns 移动到新命名空间时会丢失所有符号?

转载 作者:行者123 更新时间:2023-12-04 16:36:59 29 4
gpt4 key购买 nike

在 Leiningen REPL 中运行以下代码:

(in-ns 'my-namespace.core)
(+ 2 2)

导致此错误:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: + in this context

为什么?

最佳答案

当您使用 in-ns 创建新的命名空间时,默认情况下不引用核心命名空间( clojure.core )。 “引用”命名空间意味着将它包含在您的命名空间中,这样您就可以将该命名空间的符号称为您自己的符号。

仍然可以使用来自 clojure.core 的符号使用 完全限定名称 ,像这样:

(clojure.core/+ 2 2)

解决方案是:
  • 使用 ns而不是 in-ns ,像这样:(ns my-namespace.core)
  • 引用 clojure.core ,像这样:(clojure.core/refer-clojure)
  • 关于clojure - 为什么在使用 in-ns 移动到新命名空间时会丢失所有符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839443/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com