新手问题 关于哈希取值

wwwicbd · 2016年01月31日 · 最后由 xiaoronglv 回复于 2016年02月01日 · 2226 次阅读

Q:

为什么最后用 :name 来获取为 nil 呢? 字符串和符号在什么情况下可以混用呢?

输出

Cbd-MacBook-Pro:ruby_programming cbd$ ruby argv.rb pw.json 
原始文件内容::
{"name" : "p@ssW0rd"}
{"name"=>"p@ssW0rd"}
"p@ssW0rd"
nil

脚本内容

require 'json'

fileName = ARGV[0]
if fileName.nil?
  fileName = __FILE__
end
file = File.open(fileName)
text = file.read
puts "原始文件内容::\n#{text}"
json =  JSON.parse(text)

p json
p json["name"]
p json[:name]

file.close

因为 "name" 是 String,:name 是 Symbol。

两个是不一样的

貌似 Ruby 2.3 里可以这样用了:{'some_key': 'some_value'}

一个是 string,一个是 symbol,不一样

需要 登录 后方可回复, 如果你还没有账号请 注册新账号