问题标签 [object-identity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 在 Ruby 中,为什么 inspect() 打印出某种与 object_id() 不同的对象 id?
当p
函数用于打印一个对象时,它可能会给出一个ID,它与object_id()
给出的不同。数字不同的原因是什么?
更新: 0x4684abc
与 不同36971870
,即0x234255E
python - Python中的字符串连接
您能否描述两种字符串连接方式之间的区别:简单__add__
运算符和%s
模式?我对这个问题进行了一些调查,发现%s
(不使用括号的形式)要快一些。
还出现了另一个问题:为什么 result of'hell%s' % 'o'
指的是另一个内存区域而不是'hell%s' % ('o',)
?
有一些代码示例:
结果:
PS我知道字符串实习:)
java - 关于Java中JTextField的一个问题
我在运行我编写的 Java 类时遇到了一个小问题,尽管设计非常简单。我创建了一个 JPanel,并在其上添加了四个 JTextField,并且我还为这个 JPanel 附加了一个按钮。然后,我将一个 ActionListener 关联到这个被按下的按钮。代码如下:
奇怪的是,当我按下 OK 按钮后,我确实在这四个 JTextField 中输入了文本,它仍然会落在 IF 分支中,就好像我没有在这四个字段中的任何一个中输入任何文本一样。我已经调试了一段时间,但没有任何线索。谁能给我一些提示,例如 .getText() == "" 是否是测试无输入的有效方法?
提前致谢!
.net - 为什么 ASP.NET 视图状态会丢失序列化对象的标识?
简短的问题:当我将一个对象的同一个实例放入视图状态两次时,在反序列化时有两个实例。我希望只有一个实例。这可以做到吗?怎么做?
啰嗦的解释:
考虑以下代码:
当它运行并启动回发时,我收到消息“false”。也就是说,虽然我在视图状态中放置了一个对象,但它被序列化了两次。这可以通过检查视图状态内容来验证。
如果我尝试将交叉引用对象放在视图状态中,那么每个项目都会被序列化为单独的图形。为了显示:
现在我收到消息“False”和“True”(按此顺序)。同样,检查 Viewstate 显示,每个对象都被序列化了两次。是什么赋予了?我检查了System.Web.UI.StateBag
ILSpy 的来源,但它只是将所有值推入一个ArrayList
,并且也没有特殊的序列化代码。因此,无论是谁序列化视图状态(System.Web.UI.ObjectStateFormatter
?),都会以某种方式将每个对象序列化为一个单独的图......为什么?我可以解决它吗?
更新:我需要这个的原因是同一个对象将由两个单独的组件持久化,并且在反序列化时我想检查它们是否具有相同的对象。(或者更确切地说,它们本身都存储对象集合,我需要同步这些集合)。
我可以用十几种不同的方式实现自定义比较,但是由于我想对任意对象执行此操作,所以有点棘手。;)
java - 我可以使用 == 运算符来比较 Java 中的 Point 对象吗?
当我正在解决“破解编码面试”一书中的问题时......我有一个疑问。问题是:
给定二维平面上的两个正方形,找到一条将这两个正方形切成两半的线。
解决方案:任何穿过矩形中心的线都必须将其切成两半。因此,如果你画一条连接两个正方形中心的线,它将把两个正方形切成两半。
但现在的疑问是 cut 方法中的 '==' 运算符来检查它们是否是同一个正方形的点。点是不可变的吗??请帮助我...在此先感谢。
java - 如果 Java 的垃圾收集器移动对象,Object.hashCode 和 System.identityHashCode 是什么?
我经常听说这些方法 (Object.hashCode
和System.identityHashCode
) 返回对象的地址,或者从地址快速计算出来的东西;但我也很确定垃圾收集器会移动和压缩对象。由于哈希码不能改变,这就带来了一个问题。我知道这不是日常工作需要知道的事情,但我想了解内部情况。那么,有谁知道这是如何在 Java 中实现的?或 .NET,因为它们可能相似。
java - Morphia 保存新实体而不是更新 _id
对不起,非常愚蠢的问题。我正在使用 Morphia 1.00。有一些实体:
以及其他一些字段,setter 和 getter。尝试保存相同的实例:
据我所知,mongoDb 必须执行 upsert 命令(意思是“如果存在则更新;如果缺少则插入(单个文档)”)。但是,mongo 不仅仅是更新 _id 字段,而是将新实体保存在数据库中。
c# - 请解释此代码中用于测试对象平等和身份的技术
请解释此代码中用于测试对象平等和身份的技术。
更好的是,如果您可以为我提供任何网络链接/书籍参考以进行详细讨论。
什么是瞬态对象?
python - 如何使用等效对象访问集合中的元素?
如果我有一个与 Python 集合的元素比较相等的对象,但不是同一个对象,是否有合理的方法来获取对集合中对象的引用?用例将使用该集合来识别和共享重复数据。
示例(Python 2.7):
如何获得a
使用b
和的参考s
?我可以想到一种方法,但我不确定它是否不依赖于实现,无论你得到a
还是b
. 编辑:当 s 有多个元素时,这不起作用;交叉点很自然地实现了类似的东西[x for x in smaller_set if x in larger_set]
也许一个好的解决方法是使用将每个键映射到自身的字典,而不是集合。
c++ - 实现对象跟踪,如 Boost::Serialization
我正在为 C++ 中的对象图实现“克隆”功能,部分问题是确保如果有两个指向同一个对象的指针,它不会被克隆两次。我通过保留 amap<void*, void*>
来做到这一点,它将原始对象作为键,将克隆版本作为值。克隆对象时,我使用模板函数检查对象是否在地图中 - 如果是,我将其返回为static_cast<T*>
,否则,我克隆它并将原始和克隆存储在地图中,并隐式转换为void*
.
这种方案的问题在于,如果一个对象在两个地方被不同的类型(例如,通过接口与具体类型)引用,则强制转换void*
可能不会产生相同的值。这意味着该对象被克隆了两次。
我在网上寻找现有的解决方案,并意识到 Boost.Serialization 必须处理同样的问题。但是在浏览了它的源代码之后,我找不到实际跟踪对象指针的部分。
任何人都可以通过建议可行的设计或指出 Boost 代码中执行此操作的部分来提供帮助吗?