问题标签 [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.
swift - 如何使用 Xcode 10 中可用的 API 使枚举符合 Hashable?
在我的 Swift 4.2.1 代码中,我有这个枚举:
它符合Equatable
:
我需要使其符合Hashable
,这就是我添加扩展名的原因:
现在我想迁移到 Xcode 10 中可用的新 API。我删除了我的实现hashValue
并添加了以下实现hash(into:)
:
您能否告诉我是否正确切换到新 API?我使用这个测试,如果一切正常,它会打印true
两次:
python - 降低复杂性:查找列表中的共同元素
简单的设置:我有一个包含字符串列表(每个包含 2-15 个元素)的列表(大约 40,000 个条目)。我想比较所有的子列表来检查它们是否有一个共同的元素(它们最多共享一个)。最后,我想创建一个字典(如果您愿意,可以使用图形),其中每个子列表的索引用作键,其值是与它共享公共元素的其他子列表的索引。
例如
应该给出以下内容:
我的问题是我找到了一个解决方案,但它的计算成本非常高。首先,我编写了一个函数来计算两个列表的交集:
然后我会遍历所有列表以检查交叉点:
我知道 for 循环很慢,而且我经常不必要地循环列表(在上面的示例中,我将 1 与 2 进行比较,然后将 2 与 1 进行比较),但我不知道如何更改它以使程序运行得更快。
swift - 为什么struct在转换为字典时需要符合Hashable和Generic数组
目标是将通用列表中的项目转换为变量的字典uniqueKeys
,但我看到了错误:
不能下标不正确或不明确类型的值
我知道需要遵守Hashable
协议并最终找到解决方案,但我不完全理解为什么这个解决方案有效。
- 我明白为什么
T
需要,Hashable
因为它'进入字典键,但为什么还要CustomSet
呢? - 如果
CustomSet
使用Hashable
为什么我不需要在它的扩展中写任何东西?
初始代码
我终于解决了:
我还注意到,考虑到扩展:extension CustomSet: Hashable where T : Hashable
似乎与struct CustomSet<T : Comparable > : Hashable where T : Hashable
添加 Hashable 协议不同,因为我仍然看到该错误
我试过的
如果我将它添加到泛型类型中T
,我仍然会看到相同的错误。
如果我添加我Hashable
会CustomSet
看到错误
无法将类型“[T]”的值转换为预期的参数类型“UnsafeRawBufferPointer”
和
从非协议类型 'Hashable' 继承
ios - Hashable == 方法不能快速检测两个对象之间的差异
我实现了下面的类:
我还定义了这个类的一个对象数组:
接下来,我有以下每秒运行的方法:
这使用此处描述的 DeepDiff 框架:https ://github.com/onmyway133/DeepDiff
我的目标是刷新对数组UICollectionView
所做的更改tables
,但是框架没有检测到更改,即使我的==
方法检查了timeRemaining
和currentPrice
匹配。
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 中实现它?
swift - 我如何理解这句话“具有相同哈希值的两个实例不一定相等。”
当我阅读 Advanced Swift 一书和“可哈希需求”一章时,我对这个解释感到困惑
两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。
我如何理解“反向”情况,或者为什么具有相同哈希值的两个实例不一定比较相等。
swift4.2 - Hashable 现在想使用协议而不是 hashValue 但我想不通
我曾经有以下代码在 Swift 4.2 中有效,但现在在 Swift 5 中已弃用:
当我尝试使用新的时hash(into hasher: inout Hasher)
,我不确定该怎么做。我的 uniqueIdentifier 从 0 开始并不断增加,因此它始终是唯一的,不需要任何花哨的东西。但对我来说,我现在需要拥有以下代码:
这是真的?我不明白为什么我需要将我的 uniqueIdentifier 与一些种子结合起来。有没有办法可以克服这个问题,或者我被卡住了hasher.combine(uniqueIdentifier)
?
swift - Swift:“Hashable.hashValue”作为协议要求已被弃用;
我的 iOS 项目一直面临以下问题(这只是一个警告)。
'Hashable.hashValue' 作为协议要求已被弃用;通过实现 'hash(into:)' 来使类型 'ActiveType' 符合 'Hashable'
- Xcode 10.2
- 斯威夫特 5
源代码:
有更好的解决方案吗?警告本身建议我实施 'hash(into:)' 但我不知道,怎么做?
参考:活动标签
python - NamedTuples、Hashable 和 Python
考虑以下代码:
产生此错误
在这种情况下,它是示例代码,我已经对其进行了很多简化,因此很容易看出错误来自哪里。typed.NamedTuple
显然是根据它的所有实例变量计算它的哈希值,其中一个是一个集合。然而,当我发现这一点时,追查起来很痛苦。
所以,我的问题是,为什么错误消息会显示这个?应该不是TypeError: unhashable type: 'Person'
。以及为什么回溯不是来自错误实际所在的python内部。
swift - 如何更新此 Hashable.hashValue 以符合新要求。?
我正在尝试修复 RayWenderlich 网站上不再受支持的旧教程。警告出现在三个文件中,Chain.swift、Cookie.swift 和 Swap.swift 来自“如何使用 SpriteKit 和 Swift 制作像 Candy Crush 一样的游戏:”教程
即使在探索了许多地方出现的可用回复之后,我也不知所措。我正在努力理解这段代码在做什么,以便我可以修复它。我知道这只是一个警告,我可能会忽略它,但是游戏也显示 X 应该出现空白图块的位置,所以我怀疑它可能与此有关?
警告是这样的:
文件示例