保存时忽略变量
如果由于某种原因,在序列化对象时要省略某些实例变量,可以通过定义名为 to_yaml_properties
的方法来实现。
在此方法的主体中,放置一个字符串数组。每个字符串应与要保存的实例变量的名称匹配。任何未指定的变量都不会被保存。看看这个示例:
limit_y.rb
class Yclass
def initialize(aNum, aStr, anArray)
@num = aNum
@str = aStr
@arr = anArray
end
def to_yaml_properties
["@num", "@arr"] #<= @str will not be saved!
end
end
这里 to_yaml_properties
限制了当你调用 YAML.dump
时被保存的变量仅为 @num
和 @arr
。字符串变量 @str
将不会被保存。如果你以后希望根据保存的 YAML 数据重建对象,则你有义务确保“缺失”变量是不被需要的(在这种情况下可以忽略它们),或者如果需要,它们应该用一些有意义的值初始化:
ob = Yclass.new( 100, "fred", [1,2,3] ) # ...creates object with @num=100, @str="fred", @arr=[1,2,3]
yaml_ob = YAML.dump( ob ) #...dumps to YAML only the @num and @arr data (omits @str)
ob2 = YAML.load( yaml_ob ) #...creates ob2 from dumped data with @num=100, @arr=[1,2,3] , but without @str