考虑以下代码:
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
答案 0 :(得分:7)
通过复制代码并将其粘贴到我的控制台中,我可以重现您的问题。
然后我拿了你的哈希并做了以下事情:
hash.first.first
# => "a"
hash.first.first.length
# => 2
!!!
您的"a"
似乎有一个不可打印的第一个字符。删除它,你就没事了。
你的char是What is this char? 65279 '':
hash.first.first[0].ord
# => 65279
答案 1 :(得分:2)
您的"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。