想象一下这样一种情况,我们所知道的关于 Ruby 对象的唯一信息是它是人类可读的格式:
#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = two, @field3 = [1,2,3]>
任务是编写一个方法,该方法可以将该表示转换为该表示所指向的类的对象(当然,可以访问所有适当的命名空间、模块、类和方法)。例如:
obj = humanReadableFormat2Obj("#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = \"two\", @field3 = [1,2,3]>")
puts obj.field1 #=> "1"
puts obj.field2 #=> "two"
p obj.field3 #=> [1, 2, 3]
puts obj.class.to_s #=> User::Class::Element
PS这个任务源于几个大型数据库的同步问题。无需以二进制格式(数百 MB)将对象从一个数据库传输到另一个数据库,您可以仅传输一个脚本(几个 KB)并在另一个数据库上执行它以创建适当的对象。