【发布时间】:2015-08-13 05:20:19
【问题描述】:
依靠this answer,我写了下面的类。使用时报错:
在“序列化”中:nil:NilClass (NoMethodError) 的未定义方法“[]=”。
如何访问基类中的变量@serializable_attrs?
基类:
# Provides an attribute serialization interface to subclasses.
class Serializable
@serializable_attrs = {}
def self.serialize(name, target=nil)
attr_accessor(name)
@serializable_attrs[name] = target
end
def initialize(opts)
opts.each do |attr, val|
instance_variable_set("@#{attr}", val)
end
end
def to_hash
result = {}
self.class.serializable_attrs.each do |attr, target|
if target != nil then
result[target] = instance_variable_get("@#{attr}")
end
end
return result
end
end
用法示例:
class AuthRequest < Serializable
serialize :company_id, 'companyId'
serialize :private_key, 'privateKey'
end
【问题讨论】:
标签: ruby oop syntax class-variables