我从来不会质疑人们的生活方式选择。特别是当他走进门。他的握手就像铁一样,在我的耳朵响起后,他的要求很简单。 “倾听用户”他咆哮道,“我需要从XML转换为伪对象,我需要它完成 YESTERDAY !”和随之而来的是,他在我的办公室里一扫而光,就像一阵音爆之后的肌肉龙卷风。
所以我开始工作了。首先:
<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.
什么?但为什么?获取Mashed后,.employee.first的哈希内容如下所示:
#<Hashie::Mash firstName=["Crunch"] fourthName=["Solidfist"] lastName=["Rockgroin"] secondName=["Crumble"] thirdName=["Destructo"]>
如果有第一个,那么最后一个是什么?
#<Hashie::Mash firstName=["Crunch"] fourthName=["Solidfist"] lastName=["Rockgroin"] secondName=["Crumble"] thirdName=["Destructo"]>
同样爆炸的事情?!这里发生了什么?这段代码几乎和我的客户一样神秘。发生了什么?某种灵魂可以解释魔鬼在这里发生了什么,以及第一个/最后一个在做什么?