考虑以下代码:
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+编码以获取更多信息。