# Struct < Object
Enumerable (from ruby core)
(from ruby core)
Class Struct provides a convenient way to create a simple class that can
store and fetch values.
This example creates a subclass of `Struct`, `Struct::Customer`; the
first argument, a string, is the name of the subclass; the other
arguments, symbols, determine the *members* of the new subclass.
Customer = Struct.new('Customer', :name, :address, :zip)
Customer.name # => "Struct::Customer"
Customer.class # => Class
Customer.superclass # => Struct
Corresponding to each member are two methods, a writer and a reader,
that store and fetch values:
methods = Customer.instance_methods false
methods # => [:zip, :address=, :zip=, :address, :name, :name=]
An instance of the subclass may be created, and its members assigned
values, via method `::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>
The member values may be managed thus:
joe.name # => "Joe Smith"
joe.name = 'Joseph Smith'
joe.name # => "Joseph Smith"
And thus; note that member name may be expressed as either a string or a
joe[:name] # => "Joseph Smith"
joe[:name] = 'Joseph Smith, Jr.'
joe['name'] # => "Joseph Smith, Jr."
## What's Here
First, what's elsewhere. Class Struct:
* Inherits from [class
* Includes [module
which provides dozens of additional methods.
Here, class Struct provides methods that are useful for:
* [Creating a Struct
### Methods for Creating a Struct Subclass
: Returns a new subclass of Struct.
### Methods for Querying
: Returns the integer hash code.
: Returns the number of members.
### Methods for Comparing
: Returns whether a given object is equal to `self`, using `==` to
compare member values.
: Returns whether a given object is equal to `self`, using `eql?` to
compare member values.
### Methods for Fetching
: Returns the value associated with a given member name.
#to_a, #values, #deconstruct
: Returns the member values in `self` as an array.
: Returns a hash of the name/value pairs for given member names.
: Returns the object in nested objects that is specified by a given
member name and additional arguments.
: Returns an array of the member names.
: Returns an array of member values from `self`, as selected by the
: Returns an array containing values for given member names.
### Methods for Assigning
: Assigns a given value to a given member name.
### Methods for Iterating
: Calls a given block with each member name.
: Calls a given block with each member name/value pair.
### Methods for Converting
: Returns a string representation of `self`.
: Returns a hash of the member name/value pairs in `self`.
Group is a Struct that is only available when compiled with
The struct contains the following members:
: contains the name of the group as a String.
: contains the encrypted password as a String. An 'x' is returned
if password access to the group is not available; an empty
string is returned if no password is needed to obtain membership
of the group.
Must be compiled with `HAVE_STRUCT_GROUP_GR_PASSWD`.
: contains the group's numeric ID as an integer.
: is an Array of Strings containing the short login names of the
members of the group.
Passwd is a Struct that contains the following members:
: contains the short login name of the user as a String.
: contains the encrypted password of the user as a String. an 'x'
is returned if shadow passwords are in use. An '*' is returned
if the user cannot log in using a password.
: contains the integer user ID (uid) of the user.
: contains the integer group ID (gid) of the user's primary group.
: contains the path to the home directory of the user as a String.
: contains the path to the login shell of the user as a String.
### The following members below are optional, and must be compiled with special flags:
: contains a longer String description of the user, such as a full
name. Some Unix systems provide structured information in the
gecos field, but this is system-dependent. must be compiled with
: password change time(integer) must be compiled with
: quota value(integer) must be compiled with
: password age(integer) must be compiled with
: user access class(string) must be compiled with
: comment(string) must be compiled with
: account expiration time(integer) must be compiled with
# Class methods:
# Instance methods: