为什么我不能从哈希中读取值?
考虑以下代码:
hash = {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]} puts hash["a"]
这只是打印什么。
puts hash["a"].class
这打印出NilClass
以下ruby版本中是否存在某种已知错误?
ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13]
我希望有人可以帮助我,这让我发疯。 我的IDE是JetBrains的RubyMine。 我也尝试通过IRB直接运行它。
谢谢
PS。 操作系统是OSX
通过复制代码并将其粘贴到我的控制台中,我可以重现您的问题。
然后我拿了你的哈希并做了以下事情:
hash.first.first # => "a" hash.first.first.length # => 2
!
看来你的"a"
有一个不可打印的第一个字符。 删除它,你会没事的。
而你char是什么是这个炭? 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+Encoding 。