为什么我无法从哈希中读取值?

  • 本文关键字:哈希中 读取 ruby hash
  • 更新时间 :
  • 英文 :


考虑以下代码:

  hash = {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]}
  puts hash["a"]

这只是什么都没印。

puts hash["a"].class

这将打印NilClass

下面的ruby版本中是否存在某种已知的bug?

ruby 2.0.0p247(2013-06-27修订版41674)[通用.x86_64-darwin13]

我希望有人能帮我,这让我发疯了。我的IDE是JetBrains的RubyMine。我还试着通过IRB直接运行它。

感谢

PS。操作系统是OSX

通过复制您的代码并将其粘贴到控制台中,我可以重现您的问题。

然后我拿着你的哈希做了以下操作:

hash.first.first
# => "a"
hash.first.first.length
# => 2

您的"a"似乎有一个不可打印的第一个字符。删除它,你会没事的。

你的炭是什么?65279'';:

hash.first.first[0].ord
# => 65279

"a"键的第一个字符是BOM(字节顺序标记)。您需要使用适当的编码打开文件。我猜想你在使用UTF-16LE。

File.open('foo', 'rb:BOM|UTF-16LE') do |fi|
  ...
end

请参阅http://www.ruby-doc.org/core-2.1.1/IO.html#method-c-new-label-IO+编码以获取更多信息。

最新更新