PHP在Ruby中
关联数组在PHP中我可以这样做:PHP在Ruby中
$access = array(); $access['drivers']['create'] = 'administrator';
$access['drivers']['view'] = 'user';
echo $access['drivers']['view']; # => 'user'
我如何能做到这一点的红宝石?
回答:
用散列。如果需要,可以使用数组作为键。
access = Hash.new access["drivers", "view"] = "user"
回答:
你的意思是这样的吗?
#!/usr/bin/env ruby access = Hash.new
access['drivers'] = Hash.new
access['drivers']['create'] = 'administrator'
access['drivers']['view'] = 'user'
puts access['drivers']['view'] # => 'user'
回答:
你可以使用的Hash.new
块形式提供的空哈希作为默认值:
h = Hash.new { |h,k| h[k] = { }; h[k].default_proc = h.default_proc; h[k] }
再发生这种情况:
>> h[:this][:that] = 6 # h = {:this=>{:that=>6}}
>> h[:other][:that] = 6
# {:this=>{:that=>6}, :other=>{:that=>6}}
>> h[:thing][:that] = 83724
# {:this=>{:that=>6}, :other=>{:that=>6}, :thing=>{:that=>83724}}
的好笑的看着default_proc
东西在该块将主散列的默认值生成块与子散列共享,以便它们自动生成。
此外,还要确保你不这样做:
h = Hash.new({ })
提供一个哈希作为默认值,存在的,为什么不over in this answer一些解释。
回答:
值得注意的是,惯例是经常使用:symbols
代替"strings"
access[:drivers][:view]
他们基本上只是不可改变的字符串。由于字符串是Ruby中的可变对象,因此散列会将它们转换为内部不可变的对象(对于符号不会更少),但是您可以明确地做到这一点,并且在我看来它看起来更简洁。
回答:
从问题不清楚,如果你真的需要更新结构。我最想写的东西是这样的:
access = { :drivers => {
:create => "administrator",
:view => "user",
},
}
access[:drivers][:view] #=> 'user'
以上是 PHP在Ruby中 的全部内容, 来源链接: utcz.com/qa/263844.html