【问题标题】:Is it possible to get a hashcode or any unique representation of a value?是否可以获得哈希码或值的任何唯一表示?
【发布时间】:2018-12-07 12:40:15
【问题描述】:

在Java 中,Object 类有一个hashCode() 函数,这对于能够(尽可能)获得对象的唯一表示很有用。 Rascal 对value 有类似的东西吗?

目的:我有一个大的list[value](其中捕获了源代码行的内容,例如strnodeint 等)并想将其用作查找表 (map)。

【问题讨论】:

  • 哈希码在例如Java 会告诉你什么时候两件事肯定是不相等的,但是为了相等,你应该总是执行进一步的检查,而不仅仅是散列。

标签: hashcode rascal


【解决方案1】:

在 rascal 中,您可以使用任何值作为映射中的键,如果您只希望某些字段很重要,我认为最好的方法是使用构成键的字段创建一个新元组,并使用那。但在大多数情况下,使用整个值,或者对值进行小幅简化。

【讨论】:

  • list[value] 可以作为密钥吗?这不会在任何地方造成问题吗?
  • 任何值都可以是键。请注意注释(已弃用,您只会在解析树上遇到),因为它们不计入相等性
  • 只有当您的列表不是数据集中的“键”时才会导致问题,就像 SQL 数据存储的键一样。 Rascal 使用结构相等来判断两个值是否相同,并实现 JVM hashCode/equals 合约以使其快速正确地工作。
猜你喜欢
  • 1970-01-01
  • 2010-09-13
  • 2015-07-27
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多