新手问题 关于哈希取值

wwwicbd · January 31, 2016 · Last by xiaoronglv replied at February 01, 2016 · 2219 hits

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,不一样

You need to Sign in before reply, if you don't have an account, please Sign up first.