如何使用OpenStruct的marshal_load实用程序?它似乎没有像预期的那样工作。
文档提供了this example,但它似乎不起作用。
require 'ostruct'
event = OpenStruct.new
hash = { 'time' => Time.now, 'title' => 'Birthday Party' }
event.marshal_load(hash)
event.title # => nil如果不是这样,我如何将散列加载到OpenStruct中(而不使用构造函数)?
对于上下文:我正在从一个YAML文件加载一个散列,并将它加载到一个OpenStruct子类的现有实例中。
发布于 2013-01-15 14:39:15
marshal_load方法的存在是为了提供对Marshal.load的支持。
event = OpenStruct.new({ 'time' => Time.now, 'title' => 'Birthday Party' })
binary = Marshal.dump(event)
loaded = Marshal.load(binary) # the OpenStruct以编程方式将散列加载到结构中的最简单方法是使用send:
event = OpenStruct.new
hash.each do |key, value|
event.send("#{key}=", value)
end发布于 2013-01-15 13:06:50
尝试使用基于符号的哈希。这对我很管用。
#works.rb
hash = { :time => Time.now, :title => 'Birthday Party' }
event.marshal_load(hash)https://stackoverflow.com/questions/14331371
复制相似问题