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

回到顶部