如果我使用puts打印对象,则将打印内存ID。 有没有一种方法可以在没有内存ID的情况下打印对象(内部包含所有元素)?
当我想对对象(使用OpenSSL::Digest.new("SHA256")
进行哈希处理时,会遇到同样的问题,
对象的内存ID将包含在哈希中,
因此,如果我对具有相同组件的2个对象进行哈希处理,则它们将具有不同的哈希值。我该如何预防呢?
谢谢, MohamedLEGH
答案 0 :(得分:3)
您可以在对象上定义自己的#to_s(IO)方法。 https://crystal-lang.org/api/0.24.2/Object.html#to_s-instance-method 或一种全新的方法“给我一些可哈希的东西”,甚至定义hash方法...要小心,因为#hash在调用之间可能不是stable ...