类 Struct

类 Struct 提供了一种创建可存储和获取值的简单类的便捷方式。

此示例创建 Struct 的子类 Struct::Customer;第一个参数(字符串)是子类的名称;其他参数(符号)决定新子类的成员

Customer = Struct.new('Customer', :name, :address, :zip)
Customer.name       # => "Struct::Customer"
Customer.class      # => Class
Customer.superclass # => Struct

每个成员都对应两个方法:一个写入器和一个读取器,用于存储和获取值

methods = Customer.instance_methods false
methods # => [:zip, :address=, :zip=, :address, :name, :name=]

可以通过方法 ::new 创建子类的实例并为其成员赋值

joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
joe # => #<struct Struct::Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=12345>

成员值可以通过以下方式管理

joe.name    # => "Joe Smith"
joe.name = 'Joseph Smith'
joe.name    # => "Joseph Smith"

因此;请注意,成员名称可以表示为字符串或符号

joe[:name]  # => "Joseph Smith"
joe[:name] = 'Joseph Smith, Jr.'
joe['name'] # => "Joseph Smith, Jr."

请参阅 Struct::new

这里有什么

首先,其他地方有什么。类 Struct

另请参阅 Data,它是一个有些类似的概念,但更严格,用于定义不可变的值对象。

在此,类 Struct 提供了一些有用的方法,用于

创建 Struct 子类的方法

查询方法

比较方法

获取方法

赋值方法

迭代方法

转换方法