Skip to content
This repository was archived by the owner on Jan 2, 2023. It is now read-only.

iconara/immutable_struct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImmutableStruct

An immutable implementation of Ruby's Struct class. It works just as Struct, but there are no setters, and you can't use []=.

class Spaceship < ImmutableStruct.new(:name, :max_speed)
end

ship = Spaceship.new('Enterprise', 'Warp 9')

puts ship.max_speed # => Warp 9

ship.max_speed = '299792458 m/s' # raises NoMethodError

In addition to the above, ImmutableStruct enhances the constructor to accept a hash (but as you can see above the Struct behaviour works too):

ship = Spaceship.new(:max_speed => '∞', :name => 'The TARDIS')

puts ship.max_speed # => ∞

You can create a strict version of the struct, which will raise an error if you initialize it with a Hash that does not contain all the fields of the struct

StrictSpaceship = Spaceship.strict

strict_ship = StrictSpaceship.new(:name => 'Enterprise') # raises ArgumentError

I'm surprised every time I look at the RDoc for Struct that it doesn't do this.

About

An immutable version of Ruby's Struct class

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages