在Java中,如果我想要一个简单的数据结构,我只需在类似
的类中声明它class MySimpleStructure{
int data1;
int data2;
MyOtherDataStructure m1;
}
然后我会在我的程序中使用它,
MySimpleStructure s1 = new MySimpleStructure();
s1.data1 = 19;
s1.m1 = new MyOtherDataStructure();
如何在Ruby中进行等效实现。
答案 0 :(得分:7)
class MySimpleStructure
attr_accessor :data1, :data2, :m1
end
s1 = MySimpleStructure.new
s1.data1 = 19
s1.m1 = MyOtherDataStructure.new
答案 1 :(得分:5)
在大多数Ruby代码中,哈希用作简单的数据结构。它不像这样的效率,并且这些哈希中没有字段的定义,但是它们很像C中的结构或Java中的简单类。你当然可以像这样做自己的课程:
class MyStruct
attr_accessor :something, :something_else
end
但Ruby也有一个可以使用的Struct类。你看不太多。
#!/usr/bin/env ruby
Customer = Struct.new('Customer', :name, :email)
c = Customer.new
c.name = 'David Lightman'
c.email = 'pwned@wopr.mil'
还有OpenStruct。
#!/usr/bin/env ruby
require 'ostruct'
c = OpenStruct.new
c.name = 'David Lightman'
c.greeting = 'How about a nice game of chess?'
我写过关于这些事情here。