2

我从来都不是质疑人们生活方式选择的人。尤其是当走进门的时候。他的握手如铁一般,在我耳鸣平息后,他的要求也很简单。“听用户,”他咆哮道,“我需要从 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"]>

一样的破事?!这里发生了什么?这段代码几乎和我的客户一样神秘。发生了什么?某个善良的灵魂可以解释魔鬼在这里发生了什么,首先/最后在做什么?

4

0 回答 0