加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在clojure中,是(=’a’a)指的是’同一个原子’?

发布时间:2020-12-15 02:48:42 所属栏目:Java 来源:网络整理
导读:在Common LISP的一些实现中,我们可以说对于以下表达式 (eq 'a 'a) 是真的,因为’a和’a是“同一个原子”. 这可能是依赖于实现的,但似乎短语(在流行的LISP教学书中使用)假设相同值的原子存储在存储器中的相同位置. 在Java中,两个具有相同值的实习字符串存储在
在Common LISP的一些实现中,我们可以说对于以下表达式
(eq 'a 'a)

是真的,因为’a和’a是“同一个原子”.

这可能是依赖于实现的,但似乎短语(在流行的LISP教学书中使用)假设相同值的原子存储在存储器中的相同位置.

在Java中,两个具有相同值的实习字符串存储在内存中的相同位置.

现在JVM上的Clojure继承了Java的遗产,但是说Clojure中的两个原子(在JVM上)具有相同的值是同一个原子吗? (即Clojure的原子存储机制如何工作?)

解决方法

首先,“atom”在Clojure中具有与大多数其他Lisp不同的含义.见 http://clojure.org/atoms

Clojure的=函数使用基于值的相等.因此,具有相同值的两个对象将是=,即使它们存储在存储器中的不同位置.

要测试两个对象是否实际上是同一个对象,在内存中的同一地址,使用相同的?功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读