我从来都不是质疑人们生活方式选择的人。尤其是当他走进门的时候。他的握手如铁一般,在我耳鸣平息后,他的要求也很简单。“听用户,”他咆哮道,“我需要从 XML 转换为伪对象,我需要在昨天完成! ”说完之后,他就像音爆之后的小型肌肉龙卷风一样席卷了我的办公室.
所以我得工作了。第一:
<employeeRecord>
<employee>
<firstName>Crunch</firstName>
<secondName>Crumble</secondName>
<thirdName>Destructo</thirdName>
<fourthName>Solidfist</fourthName>
<lastName>Rockgroin</lastName>
</employee>
<dependent>
<spouse type = "spouse">
<firstName>Betty</firstName>
</spouse>
<child>
<firstName>Timmy</firstName>
</child>
</dependent>
</employeeRecord>
很简单。在研究了 Ruby 之后,我发现了一个叫做 Hashie 的小宝石,我用它做了以下事情:
class Person
def initialize
@xml = Mash.new(XmlToHash.getHash)
end
attr_accessor :xml
end
精彩的!我现在只需要引用我的客户,作为一个简单的测试,拉出他的姓氏。有了美妙的 Mash,我可以很轻松地做到这一点!
MyClient = Person.new
MyClient.xml.employee.first.lastName # => 'Rockgroin'
等等,等一下。首先在那里做什么?如果我摆脱它怎么办?
MyClient.xml.employee.lastName # => END OF THE WORLD. ABANDON YOUR IDE.
什么?但为什么?.employee.first 处的哈希内容经过 Mashed 后如下所示:
#<Hashie::Mash firstName=["Crunch"] fourthName=["Solidfist"] lastName=["Rockgroin"] secondName=["Crumble"] thirdName=["Destructo"]>
如果有第一个,那么最后一个是什么?
#<Hashie::Mash firstName=["Crunch"] fourthName=["Solidfist"] lastName=["Rockgroin"] secondName=["Crumble"] thirdName=["Destructo"]>
一样的破事?!这里发生了什么?这段代码几乎和我的客户一样神秘。发生了什么?某个善良的灵魂可以解释魔鬼在这里发生了什么,首先/最后在做什么?