Ruby 结构体类
Struct是一种紧凑的方式,使用访问器方法将一些属性组合在一起,而不需要创建一个明确的类。Struct类是一个特定类的创建者,每个类都被定义为持有一组变量和它们的访问器。Struct类的子类是 Struct::Tms
例子
输出
类方法
new : 该方法创建了一个由字符串命名的新类,由给定符号的访问方法组成。如果省略名称字符串,那么将创建一个匿名结构类。否则,这个结构类的名称将作为Struct类中的常量出现,所以这个名称必须是系统中所有结构类中唯一的,并且应该以大写字母开头。当结构类被分配给常量时,它有效地将常量的名称赋予了该类。
例子
输出
例子
输出
实例方法
- == : 它被称为Equality。如果str与other_struct在实例变量的值上相等,它将返回true。而且它们必须是由Struct.new创建的同一类。否则,它将返回false。
示例:
输出:
- [] : 它被称为Attribute Reference。它返回由符号或索引(0…length-1)命名的实例变量的值。如果命名的变量不存在,那么它将引发NameError,如果索引超出范围,那么它将引发IndexError。
示例:
输出:
- []= : 它被称为 “属性赋值”。它用于将实例变量的名称与一个符号或obj的值用int进行分配,并将其返回。如果实例变量的名字不存在或者索引超出范围,那么就会引发NameError。
示例:
输出:
- each : 该方法为每个实例变量调用块,并将值作为参数传递。
示例:
输出:
- each_pair : 该方法为每个实例变量调用块,并将名称和值作为参数传递。
示例:
输出:
- length : 该方法返回实例变量的数量。该方法的返回类型是一个整数。
示例:
输出:
- members : 该方法返回一个字符串数组,代表实例变量的名称。
示例:
输出:
- size : 这个方法与Struct#length方法类似。这个方法的返回类型是一个整数。
- to_a : 该方法以数组形式返回该实例的值。
示例:
输出:
- values : 这个方法类似于Struct#to_a方法。
- values_at : 该方法返回一个数组,该数组由str中与给定索引对应的元素组成。选择器可以是整数指数或范围。
示例:
输出:
参考资料: https://ruby-doc.org/core-2.2.0/Struct.html