Pair = Struct.new(:token, :word)first_word = Pair.new("direction", "north")second_word = Pair.new("verb", "go")#定义一个数组,保存这个新建的Structsentence = [first_word, second_word]p sentence# => [#, # ]p sentence[0]# => # #直接使用句号操作符来显示Struct中的数据p sentence[0].token,sentence[0].word# "direction"# "north"#或者使用symbol的方式来输出,结果相同p sentence[0][:token],sentence[0][:word]# "direction"# "north"
再来一个实例
# encoding: UTF-8# t=Struct.new('person',:name,:age)#算是元编程?t=Struct.new('Topic',:name,:replies) #Topic一定得是大写,包括类也是一样,强制性的约定p t # => Struct::Topict1=t.new('first',['good','not bad!','nice!'])t2=t.new('second',['不错','好','OK'])topics=[t1,t2]p topics #中文使用p来输出的时候显示的是其unicode编码 # => [#, # ]p topics[0].name # => "first" 正是动态性的体现,只要有name就能显示p topics[1].replies # => ["\u4E0D\u9519", "\u597D", "OK"]