gpt4 book ai didi

clojure - ".swap"源代码中的 "swap!"有什么作用?

转载 作者:行者123 更新时间:2023-12-02 16:48:06 31 4
gpt4 key购买 nike

我很好奇,所以我检查了swap的源代码! clojure 存储库上的函数,如下所示:

(defn swap!
"Atomically swaps the value of atom to be:
(apply f current-value-of-atom args). Note that f may be called
multiple times, and thus should be free of side effects. Returns
the value that was swapped in."
{:added "1.0"
:static true}
([^clojure.lang.Atom atom f] (.swap atom f))
([^clojure.lang.Atom atom f x] (.swap atom f x))
([^clojure.lang.Atom atom f x y] (.swap atom f x y))
([^clojure.lang.Atom atom f x y & args] (.swap atom f x y args)))

而且我不知道“.swap”函数是做什么的?我试图搜索它,但它没有在同一个文件中定义,所以找不到它的定义。或者这是另一个特殊的东西,实际上根本不是一个函数?

最佳答案

Clojure 中的很多东西实际上都是用 Java 实现的,比如引用类型(atom、ref、var、agent)、数据结构(map、vector、list) 、 set)、命名空间(实际的 Namespace 类)和其他东西。当阅读 clojure.coreClojure 函数的源代码时,经常会发现对 Java 方法的互操作调用。

据我了解,在 Clojure 本身中实现这些东西有一个长期目标(搜索 here for Clojure-in-Clojure),但目前这些东西是用 Java 实现的,这确实还不错,因为整个语言都是开源的,您可以在 github 存储库中在线检查任何实现细节(已在评论中链接):Clojure (请注意,有一个 jvm 和一个 clj 文件夹,指示其中的代码是用什么语言实现的)。

关于clojure - ".swap"源代码中的 "swap!"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16971135/

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