我有一个Ruby类,我想从类中的一个方法的参数中获取一个示例变量,我可以把所有的示例变量作为一个数组来获取:
self.instance_variables
但是,我想获得名为arg
的示例变量,具体来说:
class MyClass
def get_instance_variable(arg)
hash_of_instance_variables[arg]
end
end
object.get_instance_variable('my_instance_var')
如何计算hash_of_instance_variables
?
5条答案
按热度按时间nnsrf1az1#
要创建所有示例变量的散列,可以使用以下代码:
但是正如 cam 在他的评论中提到的,你应该使用
instance_variable_get
方法来代替:wtzytmuj2#
问题是相当老的,但找到了rails解决方案:instance_values
这是谷歌的第一个答案,所以也许它会帮助一些人。
zu0ti5jz3#
xjreopfe4#
对于Ruby 2.6+,您可以将一个块传递给
to_h
方法,从而导致非常DRY的语法:yvfmudvl5#
RubyonRails有几种内置的方法来实现这一点,您可能会发现它们可以满足您的需要。
用户= User.new(名字:“布莱恩”,姓氏:“案件”)
*属性(Rails API: ActiveModel::AttributeMethods)
user.attributes
{“第一个”=〉“布莱恩”,“最后一个”=〉“案例”}
*可序列化散列(Rails API:活动模型序列化)
用户.可序列化散列
{“第一个”=〉“布莱恩”,“最后一个”=〉“案例”}