Skip to content
On this page

End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

class · Ruby 3.1

Struct

< Object include Enumerable 23 instance methods 4 class methods

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.

Example
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:

Example
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:

Example
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:

Example
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 symbol:

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

See Struct::new.

What’s Here

First, what’s elsewhere. Class Struct:

Here, class Struct provides methods that are useful for:

Methods for Creating a Struct Subclass

::new

Returns a new subclass of Struct.

Methods for Querying

hash

Returns the integer hash code.

length, size

Returns the number of members.

Methods for Comparing

#==

Returns whether a given object is equal to self, using == to compare member values.

eql?

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.

deconstruct_keys

Returns a hash of the name/value pairs for given member names.

dig

Returns the object in nested objects that is specified by a given member name and additional arguments.

members

Returns an array of the member names.

select, filter

Returns an array of member values from self, as selected by the given block.

values_at

Returns an array containing values for given member names.

Methods for Assigning

[]=

Assigns a given value to a given member name.

Methods for Iterating

each

Calls a given block with each member name.

each_pair

Calls a given block with each member name/value pair.

Methods for Converting

inspect, to_s

Returns a string representation of self.

to_h

Returns a hash of the member name/value pairs in self.

Class methods 4

Instance methods 23

Constants

Group

Group is a Struct that is only available when compiled with HAVE_GETGRENT.

The struct contains the following members:

name

contains the name of the group as a String.

passwd

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.

gid

contains the group’s numeric ID as an integer.

mem

is an Array of Strings containing the short login names of the members of the group.

Passwd

Passwd is a Struct that contains the following members:

name

contains the short login name of the user as a String.

passwd

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.

uid

contains the integer user ID (uid) of the user.

gid

contains the integer group ID (gid) of the user’s primary group.

dir

contains the path to the home directory of the user as a String.

shell

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:

gecos

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 HAVE_STRUCT_PASSWD_PW_GECOS

change

password change time(integer) must be compiled with HAVE_STRUCT_PASSWD_PW_CHANGE

quota

quota value(integer) must be compiled with HAVE_STRUCT_PASSWD_PW_QUOTA

age

password age(integer) must be compiled with HAVE_STRUCT_PASSWD_PW_AGE

class

user access class(string) must be compiled with HAVE_STRUCT_PASSWD_PW_CLASS

comment

comment(string) must be compiled with HAVE_STRUCT_PASSWD_PW_COMMENT

expire

account expiration time(integer) must be compiled with HAVE_STRUCT_PASSWD_PW_EXPIRE

Ruby version changes 2

  1. 3.1
    • Passing only keyword arguments to Struct#initialize is warned. You need to use a Hash literal to set a Hash to a first member. [Feature #16806]

    • StructClass#keyword_init? is added [Feature #18008]