0

我有一个 Ruby 项目,我在其中以编程方式获取我需要访问的哈希中的键名。我可以通过以下方式访问我需要的字段:

current_content = entry.fields[property_name.to_sym]

但是,似乎某些内容只能使用属性语法访问:

m.title_with_locales = {'en-US' => 'US Title', 'nl' => 'NL Title'}

由于我不提前知道“标题”,我如何以编程方式拨打电话?前任:

m.${property_name}_with_locales = {'en-US' => 'US Title', 'nl' => 'NL Title'}
4

2 回答 2

4

您可以使用#send以编程方式访问属性:

m.send("#{property_name}_with_locales")
# => { 'en-US' => 'US Title', ... }

如果您需要访问 setter 并传入值,您可以执行以下操作:

m.send("#{property_name}_with_locales=", { 'whatever' => 'value' })
于 2017-04-04T12:20:36.767 回答
0

除了send@gwcodes 写的,还有 ,evalcall.

2.3.1 :010 > a
 => [1, 2, 3] 
2.3.1 :011 > a.send("length")
 => 3 
2.3.1 :012 > a.method("length").call
 => 3 
2.3.1 :013 > eval "a.length"
 => 3 

如这篇博文所示,它 callsend.

于 2017-04-04T12:27:38.057 回答