首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在clojure中,我怎样才能从命名空间中取消var?

在Clojure中,要从命名空间中取消var,您可以使用ns-unmap函数。ns-unmap函数接受两个参数:命名空间对象和要取消的var名称。以下是一个示例:

代码语言:clojure
复制
(in-ns 'my-namespace)

(def my-var 42)

(ns-unmap *ns* 'my-var)

在这个示例中,我们首先使用in-ns函数切换到my-namespace命名空间。然后,我们定义了一个名为my-var的var。接下来,我们使用ns-unmap函数从当前命名空间中取消my-var*ns*是一个特殊的变量,它引用了当前命名空间。

请注意,取消var并不会删除var的值或从内存中删除var。它只是从命名空间中取消了对该var的引用。这意味着,如果其他命名空间引用了该var,它仍然可以通过完全限定名称访问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Clojure component 设计哲学

内存式缓存:一个共享的可变引用当中获取或者设置数据的函数,比如 Clojure 的 Atom 或 Ref。 Component 和面向对象编程里的对象定义在理念上很类似。...最简单的方式就是 development 命名间中使用def定义一个持有 system map 的 Var。使用alter-var-root启停。...Component 不会对 component 进行错误恢复的尝试,不过你可以使用 :system 附着到这个 exception 然后清除任何部分构造的var 由于 component map 可能很大且有许多的重复...Reloading 开发了这种结合的"reloaded"工作流的 workflow 模式,为了进行开发,我会创建一个 user 的命名空间如下: (ns user (:require [com.stuartsierra.component...不希望通用库使用它的应用程序上强加任何特定的框架。

1K00
  • Clojure 运行原理之字节码生成篇

    交互 defrecord、deftype生成同名的类,proxy、reify生成匿名的类 需要明确一点,只有 AOT 编译时,Clojure 才会在本地生成 .class 文件,其他情况下生成的类均在内存...我们知道 Clojure 里面很多“函数”其实是用宏实现的,宏在编译时会进行展开,生成新代码,上面代码的ns、defn都是宏,展开后( Cider + Emacs 开发环境下,C-c M-m)可得...{}; } 可以看到,命名空间加载类里面有一些Var与AFn变量,可以认为一个Var对应一个AFn。.../core.clj" }); } RT 是 Clojure runtime 的实现,__init0里面会对命名空间里面出现的 var 进行赋值。...赋值与初始化函数,同时它还继承了AFunction,名字就可以看出这是一个函数的实现。

    72920

    Clojure 学习入门(18)—— 数据类型

    如何表示和处理数据 Clojure是一种动态类型语言,这意味着你程序永远不需要明确定义符号、函数、或者参数的数据类型。但是,所有的值仍然有一个类型。...程序中有特殊的意义:它的意思是“”或“值”。...作为文本,关键字开头带冒号,例如:keyword。冒号后面,它们遵循和符号相同的命名规则(见第2章)。 关键字能够作为命名空间(可选的)。...如关键字:user/foo,是指在user命名间中叫做foo的关键字.命名空间关键字能够通过输入完全限定名或前缀两个冒号在当前命名间中查询来引用(例如,如果当前命名空间都是user,::foo 和:...一个很重要的例子是,结构可以做到面向对象编程的对象90%能做的事。那么对象命名的属性和映射里的键/值对到底有什么不同之处呢?

    2.3K10

    (cljsrun-at (->JSVM :browser) 语言基础)

    由于宿主环境的不同,因此只能与宿主环境无关的Clojure代码可以JVM和JSVM间共享,并且cljs也未能完全实现clj的所有语言特性,更何况由于JSVM是单线程因此根本就不需要cljSTM等特性呢...|:=$&] 末尾字符不能是: 以:为首字符则解释为Keyword 命名空间  cljs每个symbol无论是函数还是绑定,都隶属于某个具体的命名空间之下,因此每个.cljs的首行一般为命名空间的声明...输入如下内容 ;; ------------------- ;; cljs.user/say ;; ([a1 a2 & more]) ;; 输出一堆参数:D ;;=> nil ; 根据字符串类型的关键字,已加载的命名间中模糊搜索名称或...#"sa.a") ; 查看命名空间下的公开的Var (cljs.repl/dir ns) ; 示例 (cljs.repl/dir cljs.repl) ; 打印最近或指定的异常对象调用栈信息,最近的异常对象会保存在...*e(一个dynamic var) (pst) (pst e) 注意:当我们使用REPL时,会自动引入(require '[cljs.repl :refer [doc find-doc source

    2.9K70

    几分钟内学习 Clojure

    Clojure源码托管:github 在线练习编译环境: himera learnclojure.clj 示例: ; 分号作为注释的开始 ; Clojure 用一种把元素用括号括起来的像列表一样的方式来书写...命名空间包含更多的函数 ; 一些有用的形式 ;;;;;;;;;;;;;;;;; ; clojure的逻辑结构都是宏, 看起来也没什么不同 (if false "a" "b") ; => "b"..."") ; => true ; 你可以导入模块的时候自定义名称 (require '[clojure.string :as str]) (str/replace "This is a test....upper-case) ; => "THIs Is A tEst." ; (#"" denotes a regular expression literal) ; 你可以使用":require" 从一个命名间中引入模块...) ; 你也可以从一个命名间中引入 (ns test (:import java.util.Date java.util.Calendar)) ; 类名字后加个”."

    1.7K40

    使用 ClojureScript 开发浏览器插件的过程与收获

    对于 Clojure目前 sf 上有一套视频课程,供参考。 为了方便大家使用 cljs 开发插件,整理了一份模板,供大家参考。... dev 过程,推荐设置 cljsbuild 的 optimizations 为 none,以便得到最快的编译速度; release 过程,可以将其设置为 advanced,来压缩、优化 js...externs optimizations 为 advanced 时,cljs 会充分借用 Google Closure Compiler 来压缩、混淆代码,会把变量名重命名为 a b c 之类的简写...需要先提前安装 phantom 来提供 headless 环境,写好测试就可以执行了: lein doo phantom {build-id} {watch-mode} 非常棒的一点是它也能支持热加载,所以开发过程一直开着它...这一点 Clojure 里面虽然也存在,但是 Clojure 里面一般 repl 开了就不关了,直到电脑重启。

    78430

    Java扩展Nginx之一:你好,nginx-clojure

    Ring Clojure 是一个构建 Web 应用的底层接口和库..../files/ ,如下图红框,这里选择的是最新的0.5.2版本: 解压nginx包 下载完毕后,解压,得到名为nginx-clojure-0.5.2的文件夹,里面的内容如下: 接下来根据您的操作系统对可执行文件做重命名...,这边是macOS,所以把nginx-macosx重命名为nginx,如果是linux,把nginx-linux-64重命名为nginx,如果是windows,就把nginx-win64.exe重命名为...nginx.exe 上述重命名操作是nginx-clojure官方推荐的,统一可执行文件名,这样运行文档的命令就统一了 执行命令....欣宸给不出权威答案,但是可以大神的作品得到灵感 开涛大神的《跟我学Nginx+Lua开发》讲述了如何用OpenRestyNginx上用Lua进行开发,适用于web应用、接入网关、Web防火墙、缓存服务器等场景下

    58520

    C# 高级:TAP 异步编程

    1到2花费的时间是GetStringAsync方法花费 I/O 上的时间,没有 CPU 成本。最后,2到3花费的时间是上下文重新获取控制权后继续执行的时间。...8任务取消 TAP 取消对于异步方法实现者和消费者来说都是可选的。如果一个操作允许取消,它就会暴露一个异步方法的重载,该方法接受一个取消令牌(CancellationToken 实例)。...source = new(); CancellationToken token = source.Token; var task = DoWork(token); // 实际情况可能是稍后的其它线程请求取消...这就造成了你等我,又在等你的尴尬局面。...12小结 System.Threading.Tasks 命名间中关键的一个类是 Task 类,基于 Task 的异步 API 和语言级异步编程模式颠覆了传统模式,使得异步编程非常简单。

    1K20

    2018年应该学习Java吗

    为什么应该学Java而不是X、 Y、 Z等其它语言 ? 确信可能会有更多的问题和担忧,所以请在评论告诉可以编辑文章或直接回答你。 让我们一起来看看这些问题吧!...有了Spring Boot之后,它甚至企业变得有趣起来! Java喜欢的另一件事是大量高质量的工具、支持和在线材料,它们使解决大多数问题变得非常简单。...Java大数据空间中大量使用,例如用Java编写的Apache Hadoop等工具。 世界上最大的银行和金融企业都在运行Java,以满足他们的需求。...某些情况下,当Java性能上可以与c++相比时,它实际上被用于高频交易应用程序。 JavaAndroid设备上被大量使用。 Java嵌入式空间中很大。 更多。...它已经给我们带来了一些伟大的东西,比如从Java 10开始使用var来进行类型推断。未来还有更多。 应该学习Java吗? 是的,你应该学习Java。这是当今世界上最流行的语言。

    1.1K30

    如何在Ubuntu 14.04上部署Clojure Web应用程序

    介绍 人们对函数式编程的兴趣不断增加,更具体地说,是Clojure对Web进行编程。许多关于如何构建基本应用程序的教程经常忽略部署细节。...没有服务器的同学可以在这里购买,不过个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...sudo mkdir -p /var/www/do-clojure-web/app/db /var/www/logs 现在,您可以将Clojure应用程序文件和数据库文件移动到您创建的目录。...cd /var/www/do-clojure-web/app/ 在生产环境,应用程序的版本号将随每次更新而更改。您不希望每次都发生更新系统配置。...Supervisor守护程序(服务)将从/var/www/do-clojure-web/app目录运行我们的应用程序。

    1.4K00

    不学函数式设计的3大损失

    如果不懂Clojure,读起来比较吃力。去年JetBrains全球程序员生态调查Clojure粉丝只占所有程序员很小的一部分。大家总怕花了时间学一门小众语言,时间投入上有些不值。...这些顾虑,成了我们自学Clojure的障碍。该如何克服这些障碍?靠你自己的“损失厌恶”的心理特点。人天生有避免损失的倾向。进化心理学的角度来看,这是人类漫长的进化过程形成的生存本能。...图7左侧的这张图,就是我们影院订票系统的Clojure版的main函数作为起点,绘制出的数据是如何在Clojure代码各个函数间流淌的图。...图8 对于失误1“直接返回内部状态”,函数的封装能从根源上避免图8右侧代码能够看出,Clojure 没有提供直接函数外部访问其内部状态的机制。...let用于局部范围内定义符号和数据结构的绑定。那还有20%的语法怎么办?的方法是用最喜欢的生成式AI,帮你逐行解释github上分享的那93行Clojure代码。

    42654

    Java扩展Nginx之三:基础配置项

    》 《Java扩展Nginx之二:编译nginx-clojure源码》 《Java扩展Nginx之三:基础配置项》 本篇概览 经历了前面两篇的入门和编译源码之后,本篇起,咱们用理论结合实战的方式进入系统的...这个应该是最需要弄清楚的问题,举个简单例子,当你的java代码处理请求的时候,如果把一些信息放在内存,想留给下一次请求使用,此时可能会让你失望了,因为处理下一个请求的进程可能是另一个 熟悉nginx...jar都能被java进程加载: 配置项:jvm_var jvm_var是个http配置项,用来配置定义一个变量,可以个其他变量使用 假设的jvm_classpath值原本是"/usr/local...'/usr/local/nginx'; jvm_classpath "#{nginxHome}/libs/*:#{nginxHome}/jars/*"; 咱们写脚本和配置的时候经常会用到变量,jvm_var...这时候,可以http配置增加jvm_handler_type配置项,指定location的默认content_handler_type值,这样location的content_handler_type

    40020

    (cljsrun-at (JSVM. :browser) 简单类型可不简单啊~)

    cljs内置的标量类型比js的丰富得多,一方面方便了操作,另一个方面增加了学习成本,因此js转向cljs时可能会略感不适,下面我们一起来认识吧!...标量类型一览 ;; 值/空集 nil ;; 字符串,必须使用双引号包裹 "I am a string!"...clj/cljsVar是一个容器,其内容为指向实际值的地址,当其内容为nil时称之为unbound,非nil时则称为bound。而一个Var可以对应1~N个Symbol。...;; Symbol a和b都对应同一个Var,这个Var指向1所的内存地址 (def a 1) (def b 1) 这个和JAVA、C#的String是一样的。...另外Clojure还有一个十分有趣的特性就是Symbol直接绑定值,中间没有Var,因此就不存在重新赋值的可能 (defn say [s] (println s)) (defn say1 [s

    71070
    领券