相关疑难解决方法(0)

如何在 Ruby 哈希中动态设置嵌套键的值

这应该很容易,但我找不到合适的解决方案。对于第一级按键:

resource.public_send("#{key}=", value)
Run Code Online (Sandbox Code Playgroud)

但对于foo.bar.lolo

我知道我可以像下面这样得到它:

'foo.bar.lolo'.split('.').inject(resource, :send)
Run Code Online (Sandbox Code Playgroud)

或者

resource.instance_eval("foo.bar.lolo")
Run Code Online (Sandbox Code Playgroud)

但是假设我不知道嵌套级别,如何将值设置为最后一个变量,它可能是第二个或第三个。

有没有通用的方法可以为所有级别做到这一点?对于我的例子,我可以这样做:

resource.public_send("fofo").public_send("bar").public_send("lolo=", value)
Run Code Online (Sandbox Code Playgroud)

ruby hash ruby-on-rails send

4
推荐指数
1
解决办法
4414
查看次数

标签 统计

hash ×1

ruby ×1

ruby-on-rails ×1

send ×1