当前位置:  开发笔记 > 编程语言 > 正文

clobie的新手,试图理解表达

如何解决《clobie的新手,试图理解表达》经验,为你挑选了1个好方法。

我是clojure的新手,你能解释一下这意味着什么吗?

(defonce ^:dynamic *some-var1* nil)

我理解"defonce",但不是表达的其余部分.什么是"^"?什么是"动态"?特别是变量名中的"*"是什么?



1> Dan Prince..:

defonce宏(许多人一样),可以指定一些元数据作为第一个参数.此元数据通常用于向编译器提供有关符号使用方式的提示.

在这种情况下,提供了^:dynamic元数据关键字,让编译器知道该符号应该被优化,以便在运行时使用binding表单进行动态反弹.

星号只是让其他开发人员知道符号没有以常规方式绑定的惯例.他们在那里提请注意它可能不会按照你期望的方式工作的事实.

例如,binding表单是线程本地的,符号只在表单范围内反弹.

(defonce ^:dynamic *my-var* false)

(binding [*my-var* true] *my-var*) ;; true

*my-var* ;; false

尝试*my-var*从绑定外部访问值可能不会返回您期望的值.

由于此表单已使用*special-var*约定表示,因此我们知道不会期望正常行为,并且可以在其他地方引用符号之前阅读文档或研究代码.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有