`
nj0308
  • 浏览: 4507 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

注意Hash.new(obj)的使用误区

阅读更多
    先以一个实例引出问题。假设我们要对一篇文章中使用的单词进行详细统计,也就是我需要知道一个单词出现在文章的哪几行。显然,通过Hash来统计和使用都是最方便的。同时为了在遍历文件进行单词统计的过程中不出现刺眼的if判断,我们对Hash使用了缺省值。
word_lines = Hash.new([])

    统计时直接使用
word_lines[word] << line


    从表面逻辑上看,上面的使用似乎都没问题,程序也在执行得比较顺利 ......可是?...怎么回事,结果显然不对。调试吧,在统计时把word_lines/word/line/word_lines[word]通通p(显示)出来。

    奇怪,不管什么时候,word_lines都是{}, 而word_lines[word]却还有值,而且不停的增长,甚至有大部分是重复的line值,但同一行我只赋了一次啊?!......发现了Ruby解释器的重大BUG!!

    且慢,再看看fxri(我习惯开着fxri进行ruby编码,既可查,又可试)中对Hash.new的说明。
    原来如此,说明得很清楚,“If obj is specified, this single object will be used for all default values.”,single object作为所有的缺省值。原来我一直都在对缺省值进行处理。同时我也找到了正确的使用方法
word_lines = Hash.new {|h, k| h[k] = []}


    注意哦,如果你要的不是真正的缺省值而是初始值的话,应使用Hash.new{|h,k| block}而不是Hash.new(obj)。
分享到:
评论

相关推荐

    MD5校验工具Hash.exe使用说明.pdf

    MD5 校验工具 Hash.exe 使用说明 Hash.exe 是一个 MD5 校验工具,由浪潮电子信息产业股份有限公司开发,用于确保发布的 FW 版本及下载使用版本的一致性。本文档将详细介绍 Hash.exe 工具的使用说明和详细步骤。 ...

    jquery.hash.min.js 和 jquery.ba-hashchange.min.js

    而 `jquery.hash.min.js` 和 `jquery.ba-hashchange.min.js` 这两个文件则是在 jQuery 基础上扩展了对浏览器 URL hash 变化的处理,从而实现单页面应用(Single Page Application, SPA)中后退和前进按钮的刷新功能...

    mysql_hash.exe/使用hash登陆mysql

    在获取到mysql用户的hash后, ...mysql_hash.exe -u root -p &lt; 1.txt Enter password: ***************************************** 其中1.txt在同目录,内容为你想执行的sql语句, 比如:show databases;

    filemd5hash.jar

    此jar包可使用Java 和js调用,唯一参数传入带路径的文件名即可将文件内容加密为md5 值返回,可用作文件传输过程中的文件内容是否丢失的校验(发送时在文件名中写入文件md5值),接收时根据文件内容再次加密为md5,...

    Hash.zip校验工具

    Hash.zip校验工具是一款用于验证文件完整性和准确性的实用程序,尤其在下载、传输或存储文件后确认数据未被篡改或损坏时非常有用。它通过计算文件的哈希值来实现这一目标,哈希值是一种独一无二的数据摘要,对文件...

    基于java的开发源码-哈希计算工具 Java-hash.zip

    基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发...

    Hash.exe~~~~~~~~~~~~~

    《Hash.exe:Windows系统下的MD5哈希值检查工具》 在数字世界中,验证文件的完整性和真实性是一项至关重要的任务。Hash.exe是一款专为Windows系统设计的便捷工具,用于快速计算并显示文件的MD5(Message-Digest ...

    engine-hash.h

    engine-hash.h

    uthash开源的hash函数实现

    在"uthash.h"头文件中,包含了所有必要的定义和宏,使得开发者无需从零开始编写哈希表的底层逻辑。 在 C 语言中,由于没有内置的数据结构如 Python 的字典或 Java 的 HashMap,因此开发人员通常需要自己实现类似的...

    HASH.MD5.zip

    在实际操作中,"HASH.MD5.zip"这样的文件可能包含一个或多个文件的MD5哈希值列表,用于验证下载的文件是否完整无误。例如,当你从网络上下载一个大文件后,可以使用MD5工具计算本地文件的MD5值,并将其与官方提供的...

    hash.js:纯JavaScript中的哈希函数

    hash.js 只是一个自行车棚。 安装 npm install hash.js 用法 var hash = require ( 'hash.js' ) hash . sha256 ( ) . update ( 'abc' ) . digest ( 'hex' ) 选择性哈希用法 var sha512 = require ( 'hash.js/lib/...

    ObjectHash.zip

    "ObjectHash.zip"文件中的内容很可能是一个C#代码示例,演示了如何对对象进行哈希处理。 首先,C#标准库提供了多种哈希类,如`System.Security.Cryptography`命名空间下的`SHA256`、`MD5`、`CRC32`等,它们都可用于...

    辅助工具Hash.zip

    辅助工具Hash.zip

    GEOHASH Javascript的实现

    4. `geohash.js`:可能是另一个`GEOHASH`相关的JavaScript库,提供了更多的辅助函数或优化。 5. `anchor.png`和`shadow.png`:可能用于标记图标的锚点和阴影图片。 6. `README`:项目说明文件,包含如何运行和使用这...

    MD5 hash.v1.4

    了解如何使用MD5 Hash.v1.4这样的工具,不仅可以帮助我们确保数据的完整性,还可以提升我们在排查问题和保护系统安全方面的专业能力。在日常工作中,我们应定期检查重要文件的MD5值,以防止潜在的安全威胁。

    MD5校验工具Hash.exe

    在实际应用中,Hash.exe这样的工具也经常与其他命令行工具结合使用,例如在Windows的命令提示符中,可以使用`CertUtil`命令来获取文件的MD5哈希值。在Linux或Unix系统中,可以使用`md5sum`或`openssl md5`命令。这些...

    encode_geohash.rar_geohash_geohash encode_matlab与geohash

    在给定的“encode_geohash.rar”压缩包中,包含了一个名为“encode_geohash.m”的MATLAB程序,这是对GeoHash编码的一种实现。MATLAB作为一种强大的数学计算环境,常用于各种科学计算和数据分析,包括地理信息系统...

    test-hash.zip_UTHASH_hashtest

    这个压缩包"test-hash.zip_UTHASH_hashtest"包含了UTHASH的最新源码以及使用示例,这对于理解和在你的项目中集成UTHASH非常有帮助。 UTHASH 提供了一种简洁的方式来为结构体对象添加哈希表功能,允许你通过指定的键...

    geohash.jar geohash-1.3.0

    geohash官方发布以及maven发布的版本都是基于jdk1.7编译的,碰到jdk1.6的项目会报unsupported major.minor version 51.0错误。这个资源是我基于jdk1.6编译的,执行测试案例都通过了。

    Hash在线解密_Hash在线解密_Hash在线解密平台最新版_hash解密_hash.txt_mysql5在线解密_

    Hash在线解密平台最新版php实现纯txt存储哈希跟明文对应表查询

Global site tag (gtag.js) - Google Analytics