新手问题 ruby 中 hash 列表的菜鸟问题

shlallen · 2013年01月24日 · 最后由 cdrwin 回复于 2013年01月25日 · 2729 次阅读

小弟初学初学 ruby 请问在 hash 中,可以这样初始化一个 hash 列表 a={"a"=>1,"b"=>2}或者 a={:a=>1,:b=>2}, 请问这两者之间有什么区别,我知道的是在第一种初始化中,不能用 a[:a] 来访问元素,第二种不能用 a["a"] 来访问元素。

大神们,还望请教

不合语法吧

hash = { :a => 'b' }
hash = HashWithIndifferentAccess.new(hash)

#1 楼 @chenge 不好意思,打错了

#2 楼 @chucai 能详细一点吗

#4 楼 @shlallen 这种问题意义不大吧,避开这个写法就好了。

:a 是符号 "a" 是 String

:a != "a"

需要使用 HashWithIndifferentAccess

匿名 #8 2013年01月25日

一个是字符串(String),一个是符号 (Symbol);两者肯定是不一样哦,一般推荐有 Symbol 吧

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