问题标签 [hashable]

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.

0 投票
2 回答
5485 浏览

swift - 如何使用 Xcode 10 中可用的 API 使枚举符合 Hashable?

在我的 Swift 4.2.1 代码中,我有这个枚举:

它符合Equatable

我需要使其符合Hashable,这就是我添加扩展名的原因:

现在我想迁移到 Xcode 10 中可用的新 API。我删除了我的实现hashValue并添加了以下实现hash(into:)

您能否告诉我是否正确切换到新 API?我使用这个测试,如果一切正常,它会打印true两次:

0 投票
1 回答
133 浏览

python - 降低复杂性:查找列表中的共同元素

简单的设置:我有一个包含字符串列表(每个包含 2-15 个元素)的列表(大约 40,000 个条目)。我想比较所有的子列表来检查它们是否有一个共同的元素(它们最多共享一个)。最后,我想创建一个字典(如果您愿意,可以使用图形),其中每个子列表的索引用作键,其值是与它共享公共元素的其他子列表的索引。

例如

应该给出以下内容:

我的问题是我找到了一个解决方案,但它的计算成本非常高。首先,我编写了一个函数来计算两个列表的交集:

然后我会遍历所有列表以检查交叉点:

我知道 for 循环很慢,而且我经常不必要地循环列表(在上面的示例中,我将 1 与 2 进行比较,然后将 2 与 1 进行比较),但我不知道如何更改它以使程序运行得更快。

0 投票
1 回答
5935 浏览

swift - 为什么struct在转换为字典时需要符合Hashable和Generic数组

目标是将通用列表中的项目转换为变量的字典uniqueKeys,但我看到了错误:

不能下标不正确或不明确类型的值

我知道需要遵守Hashable协议并最终找到解决方案,但我不完全理解为什么这个解决方案有效。

  1. 我明白为什么T需要,Hashable因为它'进入字典键,但为什么还要CustomSet呢?
  2. 如果CustomSet使用Hashable为什么我不需要在它的扩展中写任何东西?

初始代码

我终于解决了:

我还注意到,考虑到扩展:extension CustomSet: Hashable where T : Hashable似乎与struct CustomSet<T : Comparable > : Hashable where T : Hashable添加 Hashable 协议不同,因为我仍然看到该错误

我试过的

如果我将它添加到泛型类型中T,我仍然会看到相同的错误。

如果我添加我HashableCustomSet看到错误

无法将类型“[T]”的值转换为预期的参数类型“UnsafeRawBufferPointer”

从非协议类型 'Hashable' 继承

0 投票
1 回答
135 浏览

ios - Hashable == 方法不能快速检测两个对象之间的差异

我实现了下面的类:

我还定义了这个类的一个对象数组:

接下来,我有以下每秒运行的方法:

这使用此处描述的 DeepDiff 框架:https ://github.com/onmyway133/DeepDiff

我的目标是刷新对数组UICollectionView所做的更改tables,但是框架没有检测到更改,即使我的==方法检查了timeRemainingcurrentPrice匹配。

0 投票
3 回答
261 浏览

python - 无顺序且允许重复的可散列数据结构

我有元组/列表列表 (-1, 0, 1) (-1, 1, 0) (-1, 2, -1) (-1, -1, 2) (0, 1, -1)

我需要它们: (-1, 1, 0) (-1, 2, -1)

我希望 (-1, 0, 1) 和 (-1, 1, 0) 映射到同一个东西。我想到了类似 set 的东西,但这会删除我在元组中可能存在的任何重复项。

在生成一个新元组时说 (-1,-1,2) 我想执行一个检查

为此,我需要数据结构可散列以进行 O(1) 查找。任何想法我将如何在 Python 中实现它?

0 投票
1 回答
74 浏览

swift - 我如何理解这句话“具有相同哈希值的两个实例不一定相等。”

当我阅读 Advanced Swift 一书和“可哈希需求”一章时,我对这个解释感到困惑

两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。

我如何理解“反向”情况,或者为什么具有相同哈希值的两个实例不一定比较相等。

0 投票
0 回答
434 浏览

swift4.2 - Hashable 现在想使用协议而不是 hashValue 但我想不通

我曾经有以下代码在 Swift 4.2 中有效,但现在在 Swift 5 中已弃用:

当我尝试使用新的时hash(into hasher: inout Hasher),我不确定该怎么做。我的 uniqueIdentifier 从 0 开始并不断增加,因此它始终是唯一的,不需要任何花哨的东西。但对我来说,我现在需要拥有以下代码:

这是真的?我不明白为什么我需要将我的 uniqueIdentifier 与一些种子结合起来。有没有办法可以克服这个问题,或者我被卡住了hasher.combine(uniqueIdentifier)

0 投票
1 回答
14922 浏览

swift - Swift:“Hashable.hashValue”作为协议要求已被弃用;

我的 iOS 项目一直面临以下问题(这只是一个警告)。

'Hashable.hashValue' 作为协议要求已被弃用;通过实现 'hash(into:)' 来使类型 'ActiveType' 符合 'Hashable'

  • Xcode 10.2
  • 斯威夫特 5

源代码:

在此处输入图像描述

有更好的解决方案吗?警告本身建议我实施 'hash(into:)' 但我不知道,怎么做?

参考:活动标签

0 投票
1 回答
706 浏览

python - NamedTuples、Hashable 和 Python

考虑以下代码:

产生此错误

在这种情况下,它是示例代码,我已经对其进行了很多简化,因此很容易看出错误来自哪里。typed.NamedTuple 显然是根据它的所有实例变量计算它的哈希值,其中一个是一个集合。然而,当我发现这一点时,追查起来很痛苦。

所以,我的问题是,为什么错误消息会显示这个?应该不是TypeError: unhashable type: 'Person'。以及为什么回溯不是来自错误实际所在的python内部。

0 投票
1 回答
1981 浏览

swift - 如何更新此 Hashable.hashValue 以符合新要求。?

我正在尝试修复 RayWenderlich 网站上不再受支持的旧教程。警告出现在三个文件中,Chain.swift、Cookie.swift 和 Swap.swift 来自“如何使用 SpriteKit 和 Swift 制作像 Candy Crush 一样的游戏:”教程

即使在探索了许多地方出现的可用回复之后,我也不知所措。我正在努力理解这段代码在做什么,以便我可以修复它。我知道这只是一个警告,我可能会忽略它,但是游戏也显示 X 应该出现空白图块的位置,所以我怀疑它可能与此有关?

警告是这样的:


文件示例